2017-06-05 43 views
0

我試圖將選定的列表框值存儲爲變量。當我調試RowSelect = .List(r, 9).List(r, 9)返回"10"這是正確的,但RowSelect返回""這是不正確的。它應該返回"10"。爲什麼變量不能返回正確的字符串?將列表框值存儲到變量中

這是我到目前爲止。

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

根據是否PendClick = True,ListBox具有多個柱。我最終發現了這個問題。見答案。 – Quint

+1

你不需要把它們放在IF塊中,把'RowSelect = .List(r,9)'放在它的上面。 – PatricK

+0

@PatricK這是真的。謝謝您的意見。 – Quint

回答

0

所以我找到了問題。 Me.TextBox_Remarks = .List(r, 5)正在觸發TextBox_Remarks_Change()事件。然後會出錯,因爲變量RowSelect = ""。我只是換了Me.TextBox_Remarks = .List(r, 5)RowSelect = .List(r, 9)的位置,以便事件的順序是正確的。這是更正。

 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 
相關問題