2014-01-21 13 views
1

вот что делает мой макрос. Он находит строку с большим файлом excel и переходит в эту колонку. В этот момент он находит введенную пользователем строку и копирует все результаты в соседний столбец. Я начал изучать VBA вчера, поэтому любая помощь приветствуется.Ошибка времени выполнения '1004' Ошибка, зависящая от приложения или объекта. VBA EXCEL

вот где он получает ошибку While InStr(UCase(Worksheets("Sheet1").Cells(1, j)), UCase("request")) = 0

Вот мой полный макросъемки до сих пор.

Sub FineMe() 

Dim i, j As Long 
Dim count, test As Integer 

userinput = InputBox("Enter String", Search, "Collect user input") 
Cells.Interior.ColorIndex = 28 

While InStr(UCase(Worksheets("Sheet1").Cells(1, j)), UCase("request")) = 0 
    j = j + 1 

    Wend 

EndRow = Worksheets("Sheet1").Cells(Rows.count, j).End(xlUp).Row 
count = 1 
    For i = 1 To EndRow 
     test = InStr(UCase(Cells(i, j)), UCase(userinput)) 
      If test > 0 Then 
      Cells(count, j + 1).Value = Cells(i, j).Value 

      count = count + 1 

      End If 
    Next i 

End Sub 

Любая помощь будет принята с благодарностью. БЛАГОДАРЯ!

ответ

1

Просто добавьте j = 1 перед тем While, потому что после объявления Dim i, j As Long мы имеем j равна 0 и Worksheets("Sheet1").Cells(1, 0) вызывает ошибку (мы не Cells(1,0))

Sub FineMe() 

    Dim i, j As Long 
    Dim count, test As Integer 

    userinput = InputBox("Enter String", Search, "Collect user input") 
    Cells.Interior.ColorIndex = 28 

    j = 1 
    While InStr(UCase(Worksheets("Sheet1").Cells(1, j)), UCase("request")) = 0 
     j = j + 1 
    Wend 

    EndRow = Worksheets("Sheet1").Cells(Rows.count, j).End(xlUp).Row 
    count = 1 
    For i = 1 To EndRow 
     test = InStr(UCase(Cells(i, j)), UCase(userinput)) 
      If test > 0 Then 
      Cells(count, j + 1).Value = Cells(i, j).Value 

      count = count + 1 

      End If 
    Next i 

End Sub 

BTW, в строке Dim i, j As Long только j является Long, но i является Variant. Вместо этого вы должны использовать Dim i As Long, j As Long. То же самое с Dim count, test As Integer - вы должны объявить его следующим образом: Dim count As Integer, test As Integer

+1

Большое спасибо.! – user3221162

0

я думаю Instr (1, что вы написали CLIC Instr в редакторе VB, и нажмите F1

Смежные вопросы