У меня есть список данных, и я создал форму для ввода новых данных, которые будут добавлены в список.При нажатии на кнопку он возьмет информацию (имя и адрес электронной почты) из формы и добавит ее на соответствующие листы в алфавитном порядке.Здесь задействованы связанные ячейки, поэтому я не могу просто добавить это к основанию и отсортировать.Вместо этого он выполняет поиск в ячейке с фамилией на правильных листах, чтобы вставить строку в правильное местоположение.
В большинстве случаев это работало, как и ожидалось, до тех пор, пока я не столкнулся с, возможно, уникальной ситуацией, которую я могу 't выяснить.
По сути, у меня есть оператор if, проверяющий, является ли имя дубликатом, и впоследствии проверяющий, должно ли быть добавлено новое имя.
For i = 2 To lastrow
''^^IF STATEMENT CHECKING FOR DUPLICATE^^''
'''''''''''''''''''''''''''''''''''''''''''
'''vvIF STATEMENT CHECKING TO ADD DATAvv'''
ElseIf StrComp(lastname, searchl) = 1 And StrComp(lastname, searchl2) = -1 Then
Sheets("Master List").Range("A" & i).Offset(1).EntireRow.Insert (xlDown)
Sheets("Master List").Range("A" & i + 1).Value = firstname
Sheets("Master List").Range("B" & i + 1).Value = lastname
Sheets("Master List").Range("C" & i + 1).Value = fullname
Переменные searchl и searchl2 - это фамилии из строк поиска i и i + 1 соответственно.
Моя проблема в том, что когда я пытался добавить фамилию "Kralik", этопопытался вставить данные между фамилиями "Day" и "de Castro"
Первоначально я попытался сравнить имена, используя следующую строку кода:
ElseIf lastname > searchl And lastname < searchl2 Then
Это выполнило точноетак же, как код, изложенный выше.Затем я вставил точку останова и решил использовать метод StrComp для устранения неполадок.Сравнение «Kralik» с «Day» дало ожидаемые результаты, но проблема возникает при сравнении «Kralik» с «de Castro».По какой-то причине код думает, что «Kralik» меньше, чем «de Castro», и вводит оператор if, чтобы вставить данные в это место.Для меня еще более царапает мысль, что я открыл новую рабочую книгу и быстро набрал «Kralik» в A1, «de Castro» в A2 и формулу «= A1> A2» в A3.Формула дала результат ИСТИНА, чего я и ожидал от VBA.
РЕДАКТИРОВАТЬ: После дополнительных испытаний, я думаю, что это должно быть как-то связано с капитализацией «Kralik» против «де Кастро»«мой код работает, как и ожидалось, пока« k »в« Kralik »некапитализирован.Я буду использовать метод UCase для своих переменных и вернусь с результатами.
РЕДАКТИРОВАТЬ 2: Использование UCase также работает.Ниже приведен ответ GSerg о том, почему мой оригинальный метод не работал.