Dies ist der Code, der das Listenfeld füllte, wobei die meisten Daten aus TextBoxen übernommen wurden.Laufzeitfehler '381': tritt auf, wenn ich nach dem Entfernen eines Elements ein Element in ein Listenfeld einfügt
iListCount wird als global deklariert. Aus Gründen, die mir unbekannt sind, füllt das Listenfeld nur die erste Zeile und würde keine weiteren übernehmen, es sei denn, dies wird so gemacht.
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
Hier ist der Code, den ich verwendet habe, um das Listbox-Element und den Arbeitsblatteintrag gleichzeitig zu löschen.
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
Können Sie den Code anzeigen, in dem Sie "i" einstellen, bevor Sie das neue Element hinzufügen? (Aber wenn Ihr erster Code-Block unmittelbar auf Ihren zweiten Code-Block folgt, dann hat "i" einen Wert von "-1", was den Fehler erklären würde.) – YowE3K
@ YowE3k Sie sind genau richtig, gibt es einen Weg Um dies zu umgehen, wie Reset (i) oder etwas, um den Fehler zu vermeiden? Ich bin neu in der Programmierung und das ist eigentlich mein erster Versuch. Ich könnte den gesamten Code posten, ich bin mir nur nicht sicher, ob es in Ordnung ist ... Wenn es in Ordnung ist, würde ich gerne den ganzen Code posten. Danke für Ihre Hilfe. –
Sie müssen genug posten, um zu sehen, wie "i" auf einen ungültigen Wert (wahrscheinlich -1) gesetzt wird, wenn es in die Zeile ".List (i, 0) = txt1" kommt. Ich habe Angst davor, wie viel Code "der ganze Code" ist - wenn es nur ein paar hundert Zeilen sind, poste es und wir können es anschließend auf die relevanten Teile herunterarbeiten. Wenn es mehr ist, müssen Sie selbst etwas bearbeiten, um Dinge loszuwerden, die definitiv nicht damit zu tun haben, wie "ich" seinen Wert erhält. – YowE3K