2017-05-07 21 views
0

現在、ListBoxで選択されている値に基づいて特定のセル値を変更しようとしています。私はこれは私が意図どのように働いている私のリストボックスListBoxからの選択に基づいてセル値を変更します

Private Sub cmdAdd2_Click() 
    Dim LR As Long 
Dim r As Long 
Dim i As Long 
lstSelector.Clear 
With ActiveSheet 
    LR = .Range("A" & .Rows.Count).End(xlUp).Row 
    For r = 2 To LR 
     If .Cells(r, 1).Value = Val(TextBox6.Value) And .Cells(r, 5).Value = "No" Then 
      lstSelector.AddItem .Cells(r, 2).Value 
      lstSelector.List(i, 1) = .Cells(r, 3).Value 
      i = i + 1 
     End If 
    Next r 
End With 

を構築していますか

はこれがあります。私が抱えている問題は、5番目の列セルがどのように選択され編集されているかです。

Private Sub cmdAdd_Click() 
Range("Trades").Cells(Me.lstSelector.ListIndex + 2, 5) = "Yes" 

上記のコードは機能しますが、リストボックスをリフレッシュするときには穏やかにしか「ランダム」行を編集しません。私はコードのこのセクションでその問題を推測しています。

私がしたいのは、cmdAdd_Click()をクリックしたときにListBoxで選択された行のセル#5が値を「はい」に変更することです。

答えて

0

2番目のコード(Range("Trades").Cells(Me.lstSelector.ListIndex + 2, 5) = "Yes")では、リスト内の項目の位置を指しているListIndexが選択されています(第1、第2、第3 ...)あなたのワークシートにあります。 これを試してみてください:

Private Sub cmdAdd2_Click() 
    Dim LR As Long 
    Dim r As Long 
    Dim i As Long 
    lstSelector.Clear 
    With ActiveSheet 
     LR = .Range("A" & .Rows.Count).End(xlUp).Row 
     For r = 2 To LR 
      If .Cells(r, 1).Value = Val(TextBox6.Value) And .Cells(r, 5).Value = "No" Then 
       lstSelector.AddItem .Cells(r, 2).Value 
       lstSelector.List(i, 1) = .Cells(r, 3).Value 
       lstSelector.List(i, 2) = .Cells(r, 3).Row 'this line added for storing row number 
       i = i + 1 
      End If 
     Next r 
    End With 
End Sub 

、その後

Private Sub cmdAdd_Click() 
    Dim lItem As Long 

    For lItem = 0 To lstSelector.ListCount - 1 'Scan all items in lstSelector 
     If lstSelector.Selected(lItem) = True Then 'if selected... 
      Worksheets("Trades").Cells(lstSelector.List(lItem, 2), 5) = "Yes" 'recall row number 
     End If 
    Next 
End Sub 
+0

これは完全に働きました。どうもありがとうございます。 – Quint

関連する問題