2014-01-11 64 views
1

我在Excel宏中有一個表單。此表單將捕獲插入到Sheet2中的文本框,列表框和商店中的值。如何顯示多選列表框中的值

名爲「Next」和「Previous」的窗體小程序中有2個按鈕。這些按鈕將用於在保存的記錄之間導航。我可以在記錄之間導航,並且文本框中的值可以很好地顯示。但是,我不確定如何顯示列表框中的值。我的列表框是一個多選列表框。

我已經提供了關於如何將記錄保存在sheet2中以及如何在單擊Next按鈕時導航發生的代碼片段。

 Private Sub Save_Click() 

     Dim ctl As Control 
     Dim S As String 
     Dim i As Integer 


     RowCount = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count 
    With Worksheets("Sheet2").Range("A1") 
    .Offset(RowCount, 0).Value = Me.Name1.Value ' capture value from list box 

    'below code is for capturing value from multiselect listbox 
    With AOI 
     For i = 0 To .ListCount - 1 
     If .Selected(i) = True Then S = S & ", " & .List(i) 
    Next i 
     Range("A1").Offset(RowCount, 10).Value = S 
    End With 
    End Sub 

下面的代碼是保存記錄之間的導航..

Private Sub Next1_Click() 

     strCurrentSetofRows = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count 
     i = i + 1: j = 0 

     If i > (strCurrentSetofRows - 1) Then 
     MsgBox "No More Records" 
     Exit Sub 
     End If 

     Set sRange = Worksheets("Sheet2").Range("A1") 

     Name1.Text = sRange.Offset(i, j).Value: j = j + 1 
    End Sub 

我如何能顯示保存AOI(我的領域)的值有什麼想法。

回答

1

由於您正在使用,作爲分隔符存儲值,因此可以使用相同的方法拆分這些值並將其上傳到ListBox。順便說一句,我希望你生成的ListBox與完整列表中的UserForm's初始化事件?

這是一個非常基本的例子。請修改它以適應您的需求。

比方說Cell A1Blah1,Blah2,Blah6。那就試試這個代碼

Option Explicit 

Dim i As Long, j As Long 

Private Sub UserForm_Initialize() 
    ListBox1.MultiSelect = fmMultiSelectMulti 

    For i = 1 To 10 
     ListBox1.AddItem "Blah" & i 
    Next 
End Sub 

Private Sub CommandButton1_Click() 
    Dim ArValues As Variant 
    Dim sValue As String 
    Dim multivalues As Boolean 

    If InStr(1, Range("A1").Value, ",") Then 
     ArValues = Split(Range("A1").Value, ",") 
     multivalues = True 
    Else 
     sValue = Range("A1").Value 
     multivalues = False 
    End If 

    If multivalues = True Then 
     For i = 0 To UBound(ArValues) 
      For j = 0 To ListBox1.ListCount - 1 
       If ListBox1.List(j) = ArValues(i) Then 
        ListBox1.Selected(j) = True 
        Exit For 
       End If 
      Next j 
     Next i 
    Else 
     For j = 0 To ListBox1.ListCount - 1 
      If ListBox1.List(j) = sValue Then 
       ListBox1.Selected(j) = True 
       Exit For 
      End If 
     Next j 
    End If 
End Sub 

截圖

enter image description here

+0

雖然這個代碼讀取值但它似乎填充錯字段。值被填充到列表框上方的組合框中。其次,我的列表框的值位於sheet2的第11列。我不生成具有UserForm的Initialize事件中的完整列表的ListBox。列表框中的值被配置爲名稱管理器,並在列表框的rowsource屬性中指定了名稱管理器。我還需要初始化它嗎?它如何幫助? – user3175856

+0

任何人都可以幫忙嗎? – user3175856

+0

嗯奇怪我一定錯過了你的評論。您的列表框不會在Userform的Initialize事件中生成? –

相關問題