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

А как вы узнали в какой строке функции ошибка и в чём она заключается? Может мне код отправить, чтобы вы посмотрели?
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738335
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет мне код отправить
Не стоит!!
Сдесь же все ясновидящие экстрасенсы. И так понятно, что ошибка в 12 строке
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738344
Вот собственно, сама функция:
Код: 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
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738347
В чём здесь может быть ошибка?
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738357
В самом начале ещё такой нюанс имя функции не VPR19, а VPR5
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738376
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не очень понятно, возможно дело в Val и в каком виде данные хранятся в ячейке источнике, давайте-ка тестовый файл.
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37738574
Shocker.Pro,

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

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

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



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

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

Извините конечно, но Вы меня совсем в тупик поставили))) я ведь не программист думаю мне легче будет нажимать на del, но всё равно хочется доделать функцию, только не знаю как.
...
Рейтинг: 0 / 0
Помогите, пожалуйста разобраться с переносом числа в vba
    #37739162
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заменить в изначальном коде строку
Код: 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
Помогите, пожалуйста разобраться с переносом числа в vba
    #37739176
Shocker.Pro,

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


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