Ошибка VBA 1004 Ошибка определения приложения или определение объекта - PullRequest
0 голосов
/ 25 января 2019

Я бы получил помощь, если это возможно.
У меня есть две таблицы в одной книге.Через форму я выполняю поиск в листе «Dados» и копирую результат в лист «Pesquisa».Результаты отображаются в виде списка.Когда я дважды щелкаю по результату, это происходит: «Ошибка 1004 Ошибка определения приложения или определение объекта» .Я не понимаю причину ошибки, так как я уже просмотрел свой код и не нашел проблем.

Большое спасибо за вашу помощь.Ниже следуйте моему коду.

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)  
      Sheets("Dados").Range("A" & Sheets("Pesquisa").Range("W" & ListBox1.ListIndex + 2)).Select
    End Sub

Ответы [ 3 ]

0 голосов
/ 25 января 2019
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    MsgBox "You selected:" & vbCrLf & ListBox1.ListIndex & ": " & ListBox1.List(ListBox1.ListIndex)
    'Sheets("Dados").Range("A" & Sheets("Pesquisa").Range("W" & ListBox1.ListIndex + 2)).Select
End Sub
0 голосов
/ 25 января 2019
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 причину сбоя, что значительно облегчает отладку.

0 голосов
/ 25 января 2019

Не уверен, что это проблема, но вам может понадобиться включить .Value в ваше выражение.

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)  
    Sheets("Dados").Range("A" & Sheets("Pesquisa").Range("W" & ListBox1.ListIndex + 2).Value).Select
End Sub

Кроме того, уверены ли вы, что значение в Sheets("Pesquisa").Range("W" & ListBox1.ListIndex + 2).Value является положительным целым числом ? Если нет, то вы получите ошибку, которую вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...