如果可能,我会寻求帮助。
我在同一工作簿中有两个工作表。通过表单,我搜索“ 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
答案 0 :(得分:4)
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 :(得分:2)
不确定这是否是问题所在,但您可能需要在表达式中包含.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
处的值是正整数?如果没有,这将引发您收到的错误。
答案 2 :(得分:1)
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