Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста разобраться с переносом числа в vba / 18 сообщений из 18, страница 1 из 1
04.04.2012, 12:39
    #37738177
Помогите, пожалуйста разобраться с переносом числа в vba
Здравствуйте, уважаемые! Помогите мне пожалуйста! Вопрос такой.
Написали функцию наподобие экселевской ВПР, но эта функция почему-то при переносе числа с одного листа на другой, (например 25645,78) переносит число 25645. Т.е. отбрасывает дробную часть. Не округляет её, а просто отбрасывает и так со всеми числами! Уже пробовал и типы данных у функции поменять с integer на Currency, а в итоге всё равно получаю число 25645, но никак не 25645,78
Скажите в чём дело?
...
Рейтинг: 0 / 0
04.04.2012, 12:43
    #37738190
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Ошибка в 12-й строке функции.
...
Рейтинг: 0 / 0
04.04.2012, 13:37
    #37738326
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

А как вы узнали в какой строке функции ошибка и в чём она заключается? Может мне код отправить, чтобы вы посмотрели?
...
Рейтинг: 0 / 0
04.04.2012, 13:40
    #37738335
alex77755
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
авторМожет мне код отправить
Не стоит!!
Сдесь же все ясновидящие экстрасенсы. И так понятно, что ошибка в 12 строке
...
Рейтинг: 0 / 0
04.04.2012, 13:44
    #37738344
Помогите, пожалуйста разобраться с переносом числа в vba
Вот собственно, сама функция:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Function VPR19(Таблица, Номер_столбца_из_таблицы As Variant, Поисковое_значение As Variant, _
                                        Номер_совпадения_значения As Variant, Номер_столбца_нужного_значения As Variant) As Currency
                                        
    Application.Volatile
    
    Dim i As Currency
    Dim iCount As Currency
    
    VPR5 = 0
    
    Select Case TypeName(Таблица)
      Case "Range"
        For i = 1 To Таблица.Rows.Count
            If LCase(Trim(Таблица.Cells(i, Номер_столбца_из_таблицы))) = LCase(Trim(Поисковое_значение)) Then
                iCount = iCount + 1
            End If
            If iCount = Номер_совпадения_значения Then
                If Номер_столбца_нужного_значения = 0 Then
                    VPR5 = i
                Else
                    VPR5 = Val(Таблица.Cells(i, Номер_столбца_нужного_значения))
                End If
                Exit For
            End If
         Next i
       Case "Variant()"
         For i = 1 To UBound(Таблица, 1)
             If LCase(Trim(Таблица(i, Номер_столбца_из_таблицы))) = LCase(Trim(Поисковое_значение)) Then
                 iCount = iCount + 1
             End If
             If iCount = Номер_совпадения_значения Then
                 If Номер_столбца_нужного_значения = 0 Then
                    VPR5 = i
                 Else
                    VPR5 = Val(Таблица(i, Номер_столбца_нужного_значения))
                 End If
                 Exit For
             End If
         Next
     End Select

End Function

Модератор: учимся пользоваться тэгами оформления кода
...
Рейтинг: 0 / 0
04.04.2012, 13:44
    #37738347
Помогите, пожалуйста разобраться с переносом числа в vba
В чём здесь может быть ошибка?
...
Рейтинг: 0 / 0
04.04.2012, 13:48
    #37738357
Помогите, пожалуйста разобраться с переносом числа в vba
В самом начале ещё такой нюанс имя функции не VPR19, а VPR5
...
Рейтинг: 0 / 0
04.04.2012, 13:58
    #37738376
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Так не очень понятно, возможно дело в Val и в каком виде данные хранятся в ячейке источнике, давайте-ка тестовый файл.
...
Рейтинг: 0 / 0
04.04.2012, 15:21
    #37738574
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

И правда, всё дело в VAL
Пробовал заменить на CCur, получилось! Но теперь если ячейка пустая, то в результате получается #знач
Как быть?
...
Рейтинг: 0 / 0
04.04.2012, 16:05
    #37738683
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Ну так проверяйте ее IsEmpty (ЕМНИП)
...
Рейтинг: 0 / 0
04.04.2012, 18:25
    #37739031
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

а как правильно ею пользоваться?

Код: html
1.
If IsEmpty(VPR5) = False Then VPR5 = 0



И куда правильно её применить в моём случае? Помогите, пожалуйста!
...
Рейтинг: 0 / 0
04.04.2012, 18:52
    #37739071
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Ну типа
Код: vbnet
1.
if IsEmpty(VPR5) then VPR5 = 0 else VPR5 = CCur(Таблица.Cells(i, Номер_столбца_нужного_значения))
...
Рейтинг: 0 / 0
04.04.2012, 19:05
    #37739096
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

Попробовал уже по-всякому, никак не могу решить что ему не нравится... В каком-то случае в результате вычислений пустой ячейки появляется значение 0,00 (то, что мне и нужно) а некоторые ячейки по-прежнему #ЗНАЧ Не пойму от чего это зависит.
Ещё заметил акую фишку - в исходных данных (на месте пустой ячейки в результате вычисления которой получается #ЗНАЧ) нажимаю клавишу del и на листе "Результат" появляется число 0,00, т.е. то, которое мне и необходимо)))) Не знаете с чем это связано и как можно этого избежать? Просто когда у меня таблица из миллиона ячеек, это не реально сидеть и нажимать кнопку del на месте пустых ячеек
...
Рейтинг: 0 / 0
04.04.2012, 19:09
    #37739103
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Знаю.
На самом деле #Знач в вашем случае появляется, когда возникает ошибка выполнения функции.
Чтобы ее отладить, надо просто в окне Immediate вызывать эту функцию с нужными параметрами, тогда будет понятно, на какой строке и какая ошибка возникает
...
Рейтинг: 0 / 0
04.04.2012, 19:10
    #37739106
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Надо еще вводить проверку на пустую строку, так как CCur("") тоже выдает ошибку.
А еще лучше просто ловить ошибку преобразования CCur и во всех ошибочных случаях выдавать на выходе 0
...
Рейтинг: 0 / 0
04.04.2012, 19:21
    #37739128
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

Извините конечно, но Вы меня совсем в тупик поставили))) я ведь не программист думаю мне легче будет нажимать на del, но всё равно хочется доделать функцию, только не знаю как.
...
Рейтинг: 0 / 0
04.04.2012, 19:39
    #37739162
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста разобраться с переносом числа в vba
Заменить в изначальном коде строку
Код: vbnet
1.
VPR5 = Val(Таблица.Cells(i, Номер_столбца_нужного_значения))



на
Код: vbnet
1.
2.
3.
On Error Resume Next
VPR5 = CCur(Таблица.Cells(i, Номер_столбца_нужного_значения))
On Error Goto 0



в случае возниконовения ошибки преобразования ячейки в число типа Currency функция вернет 0
...
Рейтинг: 0 / 0
04.04.2012, 19:48
    #37739176
Помогите, пожалуйста разобраться с переносом числа в vba
Shocker.Pro,

СПАСИБО, ОГРОМНЕЙШЕЕ!!!! Всё работает супер!!!!!! Спасибо вам за помощь!! Если бы не вы, щёлкал бы я по кнопке del по часу в день!! Спасибо! Вы просто молодец!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста разобраться с переносом числа в vba / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]