Sheets("Dados").Range("A" & Sheets("Pesquisa").Range("W" & ListBox1.ListIndex + 2)).Select
В одном утверждении происходит много всего, с несколькими причинами того, что все пошло не так.
Разбейте его.
Сначала получите Worksheet
объекты:
Dim dadosSheet As Worksheet
Set dadosSheet = ActiveWorkbook.Worksheets("Dados") 'possible error 9 here
Dim pesquisaSheet As Worksheet
Set pesquisaSheet = ActiveWorkbook.Worksheets("Pesquisa") 'possible error 9 here
Затем мы хотим построить адресную строку Range
в столбце W
из ListBox1.ListIndex
и получить rowIndex
из этой ячейки в pesquisaSheet
:
Dim rowSourceAddress As String
rowSourceAddress = "W" & ListBox1.ListIndex + 2 ' definitely a positive integer
Dim rowIndex As Long
rowIndex = pesquisaSheet.Range(rowSourceAddress).Value ' possible error 13 here
Debug.Assert rowIndex > 0 ' suspect this assertion will fail
Затем мы хотим построить еще одну Range
строку адреса в столбце A
:
Dim targetAddress As String
targetAddress = "A" & rowIndex ' if rowIndex isn't a positive integer...
Dim targetRange As Range
Set targetRange = dadosSheet.Range(targetAddress) '...error 1004 is thrown here
И, наконец, мы хотим Select
этот диапазон:
targetRange.Select
Конечно, это больше кода - и, возможно, немного больше локальных переменных, чем необходимо.Но со всем явным и каждым вызовом члена в своей собственной инструкции любая заданная инструкция имеет только 1 причину сбоя, что значительно облегчает отладку.