Я новичок в VBA, поэтому у меня возникла проблема с преобразованием некоторого номера строки в номер значения для проверки IF.EXCEL VBA - Аналогичная функция для формулы excel Значение
Проблема есть. У меня есть столбец "A", наполненную чем-то вроде этого:
E/B: Дома 01
E/B: Дома 02
E/B: Строительство/Новая вилла
E/B: Строительство/Bella Casa
E/B: Дома 03
Итак, в моем коде, я хочу, чтобы заполнить «B» Колонка с 2 последних цифр, если число есть или имя, если ISN «т.
Set Rng = Range("A8:A" & Range("I" & Rows.Count).End(xlUp).Row)
For Each celula In Rng.SpecialCells(xlCellTypeVisible)
Select Case True
Case IsNumeric(Right(celula, 2)) = True
celula.Offset(0, 1).Value = Right((celula), 3)
Case Else
celula.Offset(0, 1).Value = Mid(celula, InStr(4, celula, "/") + 1, Len(celula))
End Select
Next celula
Но дело IsNumeric (справа (celula, 2)) = True никогда не будет True. Он не фиксирует 2 последних числа. Но он работает хорошо с именами и возвращает «Новая вилла» и «Белла Каса». И я думаю, что проблема в том, что Right (celula, 2) никогда не бывает числом, даже если это число.
Я хочу знать, есть ли способ конвертировать «Right (celula, 2)» в значение, как и формулу Value в excel, чтобы выполнить проверку.
OBS: Прежде чем пытаться таким образом, у меня была формула excel, примененная к этим ячейкам, и это сработало, но я хочу попробовать этот путь для учебных целей.
Благодаря
Просто скопирован и вставлен как ваш код, так и ваши данные образца в новый рабочий лист Excel, и он работает. Вы уверены, что у вас нет пробелов (-ов) после чисел? 'Debug.Print" <"+ Right (celula, 2) +"> "', чтобы убедиться (он должен печатать '<01>', '<02>' и т. Д.). – ssarabando
Выглядит хорошо. используйте это, чтобы проверить это. Возможно, вы не выбрали правильный диапазон. Для каждой celula в выборе Выберите случай True .... – causita
Я установил rgn после автофильтра, в этом была проблема. спасибо – MVAmorim