Vba функция mid
Автор Maksim Kurkovs задал вопрос в разделе Другие языки и технологии
VBA в чем проблема в функции MID? и получил лучший ответ
Ответ от Александр Погребняк[гуру]
Вы уверены, что ошибка именно в функции MID, а не в varRoman(j)?
varRoman - это массив?
Нумерация символов в строке начинается с 1. А у Вас i в цикле начинается с нуля и на первом шаге выглядит так
Mid(Number, 0, 1)
Александр Погребняк
(82147)
Понял. Нумерация символов в строке начинается с 1. А у Вас i в цикле начинается с нуля
Ответ от Максим[гуру]
Number это что?
Number это что?
Ответ от Ev[гуру]
Проблема в том, что
For i = 0 To Len(Number) Step 1
If Mid(Number, i, 1) = varRoman(j) Then
В строке не бывает нулевого символа, только первый, второй и т. д.
У вас i=0 вот MID() и не работает.
Кстати, выражение Step 1 в данном случае не нужно.
Неплохо бы правильно объявлять переменные и указывать их тип.
Dim i As Integer, j As Integer
Dim Number As String
Dim intResult As Integer
При объявлении переменной типа String её значение равно пустой строке (""),
а если переменная-число, то оно будет иметь значение 0,
поэтому присвоение intResult = 0 то же излишне
Проблема в том, что
For i = 0 To Len(Number) Step 1
If Mid(Number, i, 1) = varRoman(j) Then
В строке не бывает нулевого символа, только первый, второй и т. д.
У вас i=0 вот MID() и не работает.
Кстати, выражение Step 1 в данном случае не нужно.
Неплохо бы правильно объявлять переменные и указывать их тип.
Dim i As Integer, j As Integer
Dim Number As String
Dim intResult As Integer
При объявлении переменной типа String её значение равно пустой строке (""),
а если переменная-число, то оно будет иметь значение 0,
поэтому присвоение intResult = 0 то же излишне
Ответ от Ёергей Шепелев[гуру]
Mid вроде как возвращает строку,, даже если varRoman(j) тоже строка, то сравнение их надо осуществлять через StrComp.
Eсли varRoman(j) не строка, то надо озаботиться приведением типов.
Mid вроде как возвращает строку,, даже если varRoman(j) тоже строка, то сравнение их надо осуществлять через StrComp.
Eсли varRoman(j) не строка, то надо озаботиться приведением типов.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: VBA в чем проблема в функции MID?