這是填充列表框的代碼,它從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