2017-07-28 116 views
0

我试图访问选定/突出显示的列表框中的单个单元格"lstData"行,以便我可以在别处引用它们的值。Excel VBA:访问选定列表框行中的单个字段

当我为Me.lstData.SelectedItem设置手表时,我得到了Expression not defined in context。与Me.lstData.SelectedIndexMe.lstData.Rows(1)相同。这种工作对我来说唯一的是Me.lstData.Value,但它只返回最左边的单元格。当我尝试将其插入=OFFSET功能

=Offset(Me.lstData.Value, ,1,1) 

立即访问单元格的权利,我再次得到Expression not defined in context

如何参考其他选定的单元?

+0

这是一个形式控制列表框例如在UserForm上?我没有看到SelectedItem或SelectedIndex作为可用的属性/方法。我认为这些都是.net的实现,这些都不适用于你。 –

+0

是的,在用户窗体上。有没有办法让我做我想做的事? –

+0

您是否有机会在下面查看我的答案? –

回答

1

我不认为你可以在ListBox窗体控件上使用Offset。引用多列ListBox中的“单元格”的方法是对List属性编制索引。

这里,i返回行所选择的项目的,并1表示列表框的第二列(基0):

Option Explicit 

Private Sub CommandButton1_Click() 
Dim i As Long 

With Me.ListBox1 
    i = .ListIndex 
    MsgBox .List(i, 1) 
End With 
End Sub 

Private Sub UserForm_Initialize() 
With Me.ListBox1 
    .AddItem "A" 
    .List(0, 1) = "Alpha" 
    .AddItem "B" 
    .List(1, 1) = "Beta" 
End With 

End Sub 

enter image description here

+0

如果ListBox有一个'RowSource'属性,你可以直接使用该范围(即,使用偏移量),但是你可以很容易地将IMO索引到'List',这可能是我如何去做的,除非有与范围本身一起工作的令人信服的理由。 –

相关问题