尝试从选定的列表框项中获取单元格地址。
列表框名称:CBView
行来源:F1:K99(因此,列表框中的 K 列 = 第 5 列)
目标是选择列表框中的一行,然后双击,它会给我一个单元格的地址(最后一列 K)。例如,双击一行项目,它会给我 $K$33 作为该行项目在 K 列的单元格地址。我哪里做错了?
Private Sub CBView_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim rCell As Range
Dim x As Long
With CBView
For x = CBView.ListCount - 1 To 1 Step -1
If CBView.Selected(x) Then
MsgBox CBView.List(.ListIndex, 5)
MsgBox CBView.List(.ListIndex, 5).Address ''''<<<<< Runtime error 424 object required.
End If
Next x
End With
End Sub
答案1
我假设你使用了多列列表填充方法至少,我在使用 excel 2007,表单控制列表不支持多列。
在这种情况下,您可以说列表“一次性”填充了值,而不是实际引用范围。这可以通过以下语句证明:
MsgBox typename(CBView.List(.ListIndex, 5))
输出“string”。值不是对象 - 不具备属性或方法 - 因此出现错误。
不过,您可以做的是让温度范围为您提供地址。
Const LROWST = 1
Const LCOLST = 6
'...rest of code...
msgbox cells(LROWST + .ListIndex,LCOLST + 5).address