2017-05-07 1 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 

을 짓고 있어요 방법

이입니다. 내가 가지고있는 문제는 다섯 번째 열 셀을 선택하고 편집하는 방법입니다.

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

위 코드는 정상적으로 작동하지만 목록 상자를 새로 고칠 때 "임의"행을 편집합니다. 이 코드 섹션에서 문제를 추측하고 있습니다.

내가 원하는 것은 cmdAdd_Click()을 클릭 할 때 값을 "예"로 변경하기 위해 ListBox에서 선택된 행에 대한 Cell # 5입니다.

답변

0

두 번째 코드 (Range("Trades").Cells(Me.lstSelector.ListIndex + 2, 5) = "Yes")에서 목록에있는 항목의 위치 (첫 번째, 두 번째, 세 번째 ...)를 가리키는 ListIndex를 선택합니다.이 행은 데이터와 관련이 없습니다 귀하의 워크 시트에 있습니다. 이 함께보십시오 :

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

관련 문제