这是填充列表框的代码,它从TextBoxes中获取大部分数据。运行时错误'381':发生在删除项目后将项目添加到列表框中
iListCount被声明为全局。由于我未知的原因,列表框只填充第一行,除非这样做,否则不会采取后续行动。
Private Sub cmdAddFraudCharges_Click()
With Me.lstFCHRGS '<- ListBox
.ColumnCount = 6
.ColumnWidths = "60;65;50;26;35;70"
.AddItem
.List(iListCount, 0) = dtpAddDt |<--DateTimePicker|error occurs here
.List(iListCount, 1) = txtAddAmt |<--Continues till last column
iListCount = iListCount + 1
End With
End Sub
下面是我用来同时删除列表框项目和工作表项的代码。
Private Sub cmdDelChrgs_Click()
Dim x As Integer
Dim y As Integer
Dim t As Integer
Dim rngTarget As Range
Set rngTarget = wksFraud.Range("A1").End(xlDown)
Set wksFraud = Application.ThisWorkbook.Worksheets("Fraud")
For iListCount = lstFCHRGS.ListCount - 1 To 0 Step -1
x = lstFCHRGS.ListCount
If lstFCHRGS.Selected(iListCount) Then
y = iListCount
t = (x - y) - 1
With rngTarget
Set rngTarget = rngTarget.Offset(-t, 0)
rngTarget.EntireRow.Delete
End With
lstFCHRGS.RemoveItem (iListCount)
End If
Next iListCount
End Sub
你可以在添加新项目之前显示代码,设置“i”吗? (但是,如果你的第一块代码紧跟着你的第二块代码,那么'i'的值就是'-1',这样就可以解释错误。) – YowE3K
@ YowE3k你完全正确,有没有办法解决这个问题,比如重置(i)或者某个东西来避免错误?我是编程新手,这实际上是我的第一次尝试。我可以发布整个代码,我只是不确定是否可以这样做......如果没关系,我很乐意发布整个代码。感谢您的帮助。 –
您需要发布足够的内容,以便我们可以看到'i'在到达'.List(i,0)= txt1'行时如何设置为无效值(可能为-1)。我很担心有多少代码是“整个代码” - 如果只有几百行代码,请发布它,然后我们可以将其编辑到相关部分。如果不止这些,你将需要自己做一些编辑来摆脱那些与“我”的价值无关的东西。 – YowE3K