2017-07-28 118 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',這可能是我如何去做的,除非有與範圍本身一起工作的令人信服的理由。 –

相關問題