Здравствуйте. Есть пользовательская форма, в ней есть textbox'ы, в них данные - цифры или буквы. Есть необходимость сравнить значение в textbox'е со значением какой то ячейки на листе (через if ... then). Для каждого textbox'а провожу сравнение через цикл (от 1 до 10 через for each, соответственно в каждой ячейке или буквы или цифры). Возникает следующая проблема - если в textbox'е буквы (латинские), то все нормально, а если число, то возникает указанная ошибка 1004. Textbox'ы не умеют работать с цифрами?
Кусок кода которым делаю перебор (ищем пока не найдем значение в textbox'е):
счет2: xColumn = xColumn + 1 If Workbooks("справочник для калькулятора.xlsx").Worksheets("Лист1").Cells(xRow, xColumn).Value <> UserForm1.Controls("TextBox" & i).Value Then GoTo счет2
xColumn - номер столбца в справочной таблице i - порядковый номер textbox'a
P.s.: так же есть 1 ячейка где буквы вперемешку с цифрами, там все хорошо
скорее всего, TB видит число, как текст, то есть не 2, а "2", поэтому и сравнение не проходит. Сравнивать нужно подобное, поэтому либо оба в текст переводить, либо в число (в примере ниже это делает тип переменной)
Код
Sub TBcheck ()
…
Dim valSh#, valTB#
…
valSh=Workbooks("справочник для калькулятора.xlsx").Worksheets("Лист1").Cells(xRow, xColumn).Value
valTB=UserForm1.Controls("TextBox" & i).Value
If valSh <> valTB Then GoTo счет2
…
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
это не всегда значит перевести в текст — делайте файл-пример, если мой код не помог
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Переделал как у вас - пишет ошибку type mismatch и ссылается на строчку 5 (у вас). Может еще что то добавить надо?
Пробовал в вашем коде менять # на as variant - 1004
У меня еще есть вариант - поменять во всей таблице числа на буквы + цифры, проверил - вариант рабочий. Если проще ничего не придумать, значит на нем и остановлюсь, наверное.
cheka282 написал: Textbox'ы не умеют работать с цифрами?
вам удалось внести цифры в текстбоксы? вывод сделаете сами или помочь:(Текстбоксы как раз умеют, а вы - нет) без файла примера эта переписка может затянуться не на один день
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Ігор Гончаренко написал: вам удалось внести цифры в текстбоксы? вывод сделаете сами или помочь:(Текстбоксы как раз умеют, а вы - нет) без файла примера эта переписка может затянуться не на один день
А что не так с этим? Нонсенс какой-то?
В рабочем файле цифры из одной таблицы вносятся в textbox'ы на форме, затем значение из textbox'a сравниваются с цифрами из другой таблицы, где эти значения такие же цифры. Я не вижу противоречия, разве что "тип" данных где-то в процессе переноса данных меняется.
Добрый день. В VBA с неявным преобразованием типов далеко не все очевидно. Если определить ValTB в #8 как "String", то всё неожиданно заработает. Разумеется, лучше использовать явные преобразования:
Код
Sub test1()
Dim valTB
valTB = UserForm1.TextBox1.Value
If IsNumeric(valTB) Then
valTB = CDbl(valTB) ' преобразовали в Double
Else ' в Textbox введено не число
' ...
End If
End Sub