Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem mit Code wenn leer

Problem mit Code wenn leer
14.06.2020 11:02:27
Peter
Hallo,
ich benötige eure Hilfe. Ich habe einen Code zum Befüllen einer Listbox.
Der Fehler liegt darin, dass wenn nichts gefunden wird, dass dann bei "out" die Fehlermeldung Laufzeitfehler 13 typenunverträglich erfolgt.
Könnt ihr mir bitte helfen.

'Kategorien je nach gewähltem Datum
Private Sub CommandButton30_Click()
Dim objSortedList As Object
Dim objArrayList As Object
Dim Arr As Variant
Dim out As Variant
Dim L As Long
Dim z1 As String
z1 = Sheets(ComboBox3.Value).Cells(Rows.Count, 5).End(xlUp).Row
Set objSortedList = CreateObject("System.collections.SortedList")
Set objArrayList = CreateObject("System.collections.ArrayList")
Arr = Sheets(ComboBox3.Value).Range("A1:H" & z1) 'anpassen
For L = 10 To UBound(Arr)
If CDate(Arr(L, 2)) >= TextBox2.Value Then
If CDate(Arr(L, 2))  "" Then
objSortedList(CStr(Arr(L, 5))) = Array((Arr(L, 5)))
End If
End If
End If
Next
objArrayList.addrange objSortedList.getvaluelist
out = WorksheetFunction.Transpose(WorksheetFunction.Transpose(objArrayList.toarray))
With ListBox3
.List = out
.ColumnCount = 1
End With
End Sub
Gruss
Peter

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Code wenn leer
14.06.2020 11:45:18
Oberschlumpf
Hi Peter,
dann überprüf doch vor dem out-Befehl, ob objArrayList Werte enthält oder nicht.
Hilfts?
Wenn nicht, zeig uns bitte per Upload eine Bsp-Datei mit ausreichend Bsp-Daten, so dass auch wir deinen Code testen können.
Ciao
Thorsten
AW: Problem mit Code wenn leer
14.06.2020 11:47:53
Peter
Hallo Thorsten,
besten Dank. Das habe ich mir schon gedacht. Aber wie prüfe ich ob objArrayList Werte enthält?
Gruss
Peter
AW: Problem mit Code wenn leer
14.06.2020 11:50:56
Oberschlumpf
Hi Peter,
wenn UBound(objArrayList) = 0, dann keine Werte enthalten.
Lies in vielen Hilfen nach, was UBound macht - dann hättest du auch da wieder etwas gelernt :-)
Hilfts?
Ciao
Thorsten
Anzeige
AW: Problem mit Code wenn leer
14.06.2020 12:02:04
Peter
Hallo Thorsten,
ich habe jetzt dies eingesetzt:
If UBound(objArrayList) = 0 Then
MsgBox "leer"
Exit Sub
Else
Jetzt kommt Fehlermeldung: Fehler beim Kompilieren - erwartet Datenfeld.
Was soll ich nun bitte machen?
Gruss
Peter
AW: Problem mit Code wenn leer
14.06.2020 12:06:50
Oberschlumpf
Hi Peter,
...Was soll ich nun bitte machen?
Bitte den 2. Teil meiner 1. Antwort beachten.
Ciao
Thorsten
UBOUND funktioniert nicht bei NOTHING! (owT)
14.06.2020 12:10:17
EtoPHG

AW: UBOUND funktioniert nicht bei NOTHING! (owT)
14.06.2020 12:12:31
Peter
Wie bitte dann?
AW: UBOUND funktioniert nicht bei NOTHING! (owT)
14.06.2020 12:16:41
Oberschlumpf
na, ich warte immer noch auf das Beachten meiner zweiten Bemerkung in meinem ersten Beitrag.
AW: anbei Testdatei
14.06.2020 12:26:09
Peter
Hallo Thorsten,
habe eine Testdatei erstellt. Gib bitte in TextBox1 "01.01.2020" und in TextBox2 "31.12.2020" ein.
Dann wird die ListBox gefüllt.
Wenn Du das Datum jeweils auf "01.01.2021" bzw. "31.12.2021" änderst, erfolgt die Fehlermeldung bei "out".
TestDatei: https://www.herber.de/bbs/user/138277.xlsm
Gruss
Peter
Anzeige
stimmt...
14.06.2020 12:15:27
Oberschlumpf
....war mir etwas später auch ein/aufgefallen. Aber ohne Bsp-Datei kann ich nun auch nicht weiterhelfen. Du ja auch nicht, sonst hättest du nicht nur geschrieben, was nicht geht, sondern auch, wie es geht, oder? :-)
AW: Problem mit Code wenn leer
14.06.2020 12:32:15
Daniel
Hi
Entweder funktioniert nach der Schleife die Prüfung:
If objSortedList.Count > 0 Then
Alternativ kannst du auch eine Prüfvariable einführen:
         'Kategorien je nach gewähltem Datum
Private Sub CommandButton30_Click()
Dim objSortedList As Object
Dim objArrayList As Object
Dim Arr As Variant
Dim out As Variant
Dim L As Long
Dim z1 As String
Dim Check as boolean
z1 = Sheets(ComboBox3.Value).Cells(Rows.Count, 5).End(xlUp).Row
Set objSortedList = CreateObject("System.collections.SortedList")
Set objArrayList = CreateObject("System.collections.ArrayList")
Arr = Sheets(ComboBox3.Value).Range("A1:H" & z1) 'anpassen
For L = 10 To UBound(Arr)
If CDate(Arr(L, 2)) >= TextBox2.Value Then
If CDate(Arr(L, 2))  "" Then
objSortedList(CStr(Arr(L, 5))) = Array((Arr(L, 5)))
Check = true
End If
End If
End If
Next
If Check Then
objArrayList.addrange objSortedList.getvaluelist
out = WorksheetFunction.Transpose(WorksheetFunction.Transpose(objArrayList. _
toarray))
With ListBox3
.List = out
.ColumnCount = 1
End With
End if
End Sub
Gruß Daniel
Anzeige
AW: Problem mit Code wenn leer - erledigt
14.06.2020 14:04:03
Peter
Hallo Daniel,
besten Dank für Deine Hilfe.
ich habe

If objSortedList.Count > 0 Then
else
exit sub
eingebaut. Funktioniert
Wünsche noch einen schönen Sonntag.
Gruss
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige