2017-11-21 15 views
0

人これは私が誰かを助けてくれることを願っています。 名前付き範囲のデータを持つコンボボックスがあり、コンボボックスから値を選択してリストボックスに追加したいと考えています。VBA excel - リストボックスにコンボボックスの項目を追加する

現在、ボタンでリストボックスに項目を追加できますが、もう1つ追加すると現在の項目が上書きされます。

また、リストボックスに既に値が入っている場合は、下部に項目を追加する必要があります。

私はのアクションを分離するために提案するすべてのヘルプは高く評価されるだろう:)

image of the issue

Dim i As Integer 

With Me.lb_lease 

.ColumnCount = 3 
.ColumnWidths = "200;50;50" 
.AddItem 
.List(i, 0) = cbox_hardware.Column(0) 
.List(i, 1) = cbox_hardware.Column(1) 
.List(i, 2) = cbox_hardware.Column(2) 
i = i + 1 

End With 
+0

これはループ内にありますか? 「私」とは何か? – Tom

+0

また、私はこれがあなたの問題を解決すると思う[Link](https://stackoverflow.com/a/6973396/3042759) – Tom

+0

これはボタンのコードです。少し不確かな –

答えて

0

、私はそれが最後の行を見つけることとは何かを持っていると思いますが、私はよく分かりませんリストボックスを設定して項目を追加します。以下の手順では、ボックスを設定し、既存のコンテンツをすべて消去します。状況に合わせて、ワークシートとリストボックスの名前を変更します。コードは、リストボックスがユーザーフォーム内にある場合にも機能します。

Private Sub ResetListBox() 

    With Worksheets("LibraryAccount").ListBox1 
     .ColumnCount = 3 
     .ColumnWidths = "80;50;50" 
     .Clear       ' delete current list 
    End With 
End Sub 

次の手順で項目を追加します。 "One; Two; Three"のようなセミコロンで区切られた文字列が必要です。 ListIndexを使用してコンボボックスの結果から連結し、行を識別することができます。プロシージャは、文字列を逆アセンブルし、リストの最後に追加します。ワークシートとリストボックスの名前を変更する必要があります。

Private Sub AddToListBox(AddArray As String) 

    Dim Arr() As String 
    Dim i As Integer 
    Dim C As Long 

    Arr = Split(AddArray, ";") 

    With Worksheets("LibraryAccount").ListBox1 
     i = .ListCount 
     .AddItem 
     For C = 0 To 2 
      .List(i, C) = Arr(C) 
     Next C 
    End With 
End Sub 

以下の手順は、上記の手順をテストするための手順です。 ResetListboxを実行してから、TestAddを何回か呼び出すことができます。

Private Sub TestAdd() 
    AddToListBox "One;Two;Three" 
End Sub 
関連する問題