2017-06-05 8 views
0

Ich versuche, einen ausgewählten Listbox-Wert als Variable zu speichern. Beim Debuggen RowSelect = .List(r, 9). Die .List(r, 9) gibt "10" zurück, die korrekt ist, aber RowSelect gibt "" zurück, was nicht korrekt ist. Es sollte "10" zurückgeben. Warum gibt die Variable nicht die richtige Zeichenfolge zurück?Speichern Sie einen ListBox-Wert in einer Variablen

Das ist was ich bisher habe.

Dim PendClick As Boolean 
Dim RrkBoxChg As Long 
Dim r As Long 
Dim m As Long 
Dim wsh As Worksheet 
Dim RowSelect As String 

Private Sub ListBox2_Click() 
With Me.ListBox2 
    If .ListIndex = -1 Then 
    ElseIf .ListIndex >= 0 Then 
    r = .ListIndex 
     If PendClick = True Then 
      Me.TextBox_Remarks = .List(r, 5) 
      RowSelect = .List(r, 9) 
     ElseIf PendClick = False Then 
      Me.TextBox_Remarks = .List(r, 6) 
      RowSelect = .List(r, 9) 
     End If 
    End If 
End With 
End Sub 

Private Sub TextBox_Remarks_Change() 
    r = Me.ListBox2.ListIndex 
    If PendClick = True Then 
     Me.ListBox2.List(r, 5) = Me.TextBox_Remarks 
     Worksheets("ToolData").Cells(RowSelect, 12) = Me.TextBox_Remarks 
    ElseIf PendClick = False Then 
     Me.ListBox2.List(r, 6) = Me.TextBox_Remarks 
     Worksheets("ToolData").Cells(RowSelect, 12) = Me.TextBox_Remarks 
    End If 
End Sub 
+0

Die ListBox hat mehrere Spalten abhängig davon, ob 'PendClick = True' oder nicht. Ich habe das Problem gefunden. Siehe Antwort. – Quint

+1

Sie müssen sie nicht in den IF-Block setzen, setzen Sie 'RowSelect = .List (r, 9)' darüber. – PatricK

+0

@ PatricK Das stimmt. Danke für deinen Beitrag. – Quint

Antwort

0

So fand ich das Problem. Me.TextBox_Remarks = .List(r, 5) löste das Ereignis TextBox_Remarks_Change() aus. Was würde dann ausfallen, weil die Variable RowSelect = "". Ich habe einfach die Positionen Me.TextBox_Remarks = .List(r, 5) und RowSelect = .List(r, 9) so getauscht, dass die Reihenfolge der Ereignisse korrekt war. Dies ist die Korrektur.

 If PendClick = True Then 
     RowSelect = .List(r, 9) 
     Me.TextBox_Remarks = .List(r, 5) 
    ElseIf PendClick = False Then 
     RowSelect = .List(r, 9) 
     Me.TextBox_Remarks = .List(r, 6) 
    End If 
Verwandte Themen