#excel #vba
#excel #vba
Вопрос:
Я хочу найти текст «Общий раздел учетной записи», используя InStr
поиск и Excel.
Когда я использую поиск в Excel и ввожу слово «Общие», оно находит значение.
Когда я пытаюсь выполнить поиск по «Общему разделу учетной записи» или «Общие» (общие с пробелом после), он не может найти значение.
То же самое относится и к моей InStr()
функции:
' Loop through entire column A
For i = 1 To eProColCount 'Rows.Count
If InStr(1, ActiveSheet.Cells(i, "A").value, "General") <> 0 Then
Debug.Print ActiveSheet.Cells(i, "A").value
End If
Next i ' End loop
Когда я копирую значение внутри ячейки и вставляю его в поиск или в качестве параметра в my InStr()
, он находит то, что я ищу.
Я попытался изменить параметры внутри поиска Excel.
Комментарии:
1. Что
=CODE(MID(A3,8,1))
возвращает?2. Ваш лист с данными может не быть активной таблицей на момент поиска, поэтому не будут возвращены правильные данные. Попробуйте использовать прямые ссылки на рабочие листы и посмотрите, работает ли это. Я бы также использовал диапазон. Метод поиска для этого не является циклом
3. @Tragamor — буква столбца является допустимым 2-м аргументом в
Cells
— либо1
или"A"
было бы хорошо.4. @BigBen Он возвращает
160
5. Это неразрывный пробел. Может быть, заменить его обычным пробелом.
Ответ №1:
другой способ читать столбец, пока он не станет пустым
Option Explicit ' it is a best practice
Sub search()
Dim n As Integer ' to read the next row
Dim myContent As String ' content of the current Cell
n = 1
Do While Not (IsEmpty(ThisWorkbook.Application.Sheets("NameOfMySheet").Cells(n, 1)))
myContent = ThisWorkbook.Application.Sheets("NameOfMySheet").Cells(n, 1).Value
If InStr(1, myContent, "General") <> 0 Then
Debug.Print myContent
End If
' next row
n = n 1
Loop
End Sub