Excel Userform:在文本框中继续运行总计
我希望每次在我的userform中更新列表框时,都更新一个textbox值。我有两个用户表单,用户可以在它们之间来回移动值)。我希望每次值在userforms之间来回移动时,都会更新textbox值。下面是我的代码Excel Userform:在文本框中继续运行总计,excel,vba,userform,Excel,Vba,Userform,我希望每次在我的userform中更新列表框时,都更新一个textbox值。我有两个用户表单,用户可以在它们之间来回移动值)。我希望每次值在userforms之间来回移动时,都会更新textbox值。下面是我的代码 Private Sub btnMoveLeft_Click() Dim iCtr As Long For iCtr = 0 To Me.lstAssigned.ListCount - 1 If Me.lstAssigned.Selected(iCtr) = True Th
Private Sub btnMoveLeft_Click()
Dim iCtr As Long
For iCtr = 0 To Me.lstAssigned.ListCount - 1
If Me.lstAssigned.Selected(iCtr) = True Then
Me.lstUnassigned.AddItem Me.lstAssigned.List(iCtr)
lookValue = WorksheetFunction.VLookup(Me.lstUnassigned(iCtr), Sheets("Pivot").Range("A:J"), 10, False)
txtAC.Value = txtAC.Value - lookValue
End If
Next iCtr
For iCtr = Me.lstAssigned.ListCount - 1 To 0 Step -1
If Me.lstAssigned.Selected(iCtr) = True Then
Me.lstAssigned.RemoveItem iCtr
End If
Next iCtr
End Sub
Private Sub btnMoveRight_Click()
Dim iCtr As Long
For iCtr = 0 To Me.lstUnassigned.ListCount - 1
If Me.lstUnassigned.Selected(iCtr) = True Then
Me.lstAssigned.AddItem Me.lstUnassigned.List(iCtr)
lookValue = WorksheetFunction.VLookup(Me.lstAssigned.List(iCtr), Sheets("Pivot").Range("A:J"), 10, False)
txtAC.Value = txtAC.Value + lookValue
End If
Next iCtr
For iCtr = Me.lstUnassigned.ListCount - 1 To 0 Step -1
If Me.lstUnassigned.Selected(iCtr) = True Then
Me.lstUnassigned.RemoveItem iCtr
End If
Next iCtr
End Sub
我当前收到的错误是,当它试图获取lookValue时,错误显示“无法获取列表属性。无效的属性数组索引”。非常感谢您的帮助。在许多情况下,最好使用中间变量,而不是重复执行同一操作。在这种情况下,您的问题是检索当前所选列表项的
Me.lstaigned.List(iCtr)
操作。通过使用一个中间变量,我能够让您的代码正常工作并从列表框中删除该项,而无需第二个循环
Private Sub btnMoveLeft_Click()
Dim iCtr As Long
Dim selectedValue As Variant
For iCtr = 0 To Me.lstAssigned.ListCount - 1
If Me.lstAssigned.Selected(iCtr) = True Then
selectedValue = Me.lstAssigned.List(iCtr)
Me.lstUnassigned.AddItem selectedValue
lookValue = WorksheetFunction.VLookup(selectedValue, _
Sheets("Pivot").Range("A:J"), 10, False)
txtAC.Value = txtAC.Value - lookValue
Me.lstAssigned.RemoveItem iCtr
End If
Next iCtr
End Sub
Private Sub btnMoveRight_Click()
Dim iCtr As Long
Dim selectedValue As Variant
For iCtr = 0 To Me.lstUnassigned.ListCount - 1
If Me.lstUnassigned.Selected(iCtr) = True Then
selectedValue = Me.lstUnassigned.List(iCtr)
Me.lstAssigned.AddItem selectedValue
lookValue = WorksheetFunction.VLookup(selectedValue, _
Sheets("Pivot").Range("A:J"), 10, False)
txtAC.Value = txtAC.Value + lookValue
Me.lstUnassigned.RemoveItem iCtr
End If
Next iCtr
End Sub