Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1824to1828
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
Array auf Inhalt prüfen
23.04.2021 17:08:04
NW
Hallo Leute,
ich verzweifele an den Arrays in VBA :-(
Ich habe ein temporäres Array, was ich nach jedem Durchgang löschen möchte und jedesmal frage, ob es voll oder leer ist.
Dafür habe ich hier im Forum die IsEmpty-Methode gefunden.
Die gibt mir aber auch nach Löschen des Arrays voll aus, obwohl der array leer ist.
Könnt ihr mir bitte helfen ? Danke

Sub test()
Dim Sig() As String
ReDim Sig(1 To 10)
If IsEmpty(Sig) Then
test = "leer"
Else
test = "voll"
End If
Erase Sig
If IsEmpty(Sig) Then
test = "leer"
Else
test = "voll"
End If
End Sub

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 17:10:10
Hajo_Zi
mit
ReDim Sig(1 To 10)
wird es doch beim nächsten Start gelöscht.
GrußformelHomepage
AW: Array auf Inhalt prüfen
23.04.2021 17:12:13
NW
Ich verstehe nicht genau, was du meinst ?!
Die zweite If-Abfrage sollte "leer" ergeben, aber sie ergibt "voll", obwohl der Array leer ist durch Erase
AW: Array auf Inhalt prüfen
23.04.2021 17:20:02
Nepumuk
Hallo,
teste mal:

If Trim$(Join$(Sig)) = vbNullString Then
MsgBox "leer"
Else
MsgBox "voll"
End If
Gruß
Nepumuk
Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 17:29:19
NW
Funktioniert leider auch nicht. Jetzt spuckt er mir die ganze Zeit leer aus :-(
Sobald da Werte in dem String stehen, bringt er einen Fehler "Typen unverträglich"
AW: Array auf Inhalt prüfen
23.04.2021 17:32:58
Nepumuk
Hallo,
kann ich nicht nachvollziehen:

Sub test()
Dim Sig() As String
ReDim Sig(1 To 10)
Sig(5) = "123"
If Join$(Sig, vbNullString) = vbNullString Then
MsgBox "leer"
Else
MsgBox "voll"
End If
End Sub
Gruß
Nepumuk
AW: Array auf Inhalt prüfen
23.04.2021 17:28:43
Nepumuk
Hallo,
noch einfacher:

If Join$(Sig, vbNullString) = vbNullString Then
Gruß
Nepumuk
AW: Array auf Inhalt prüfen
23.04.2021 17:36:35
onur
Ein Array ist nicht mehr leer, wen du es dimensioniert hast, aber die Elemente schon. Versuch es so:

If IsEmpty(Sig(UBound(Sig))) Then test = "leer"

Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 17:51:18
NW
Danke, aber da habe ich das gleiche Problem, wie beim Nepumuk - Typen unverträglich
Versteh ich selbst nicht. Es ist ein normales array mit string werten drin, mehr nicht
AW: Array auf Inhalt prüfen
23.04.2021 17:57:44
onur
Zum Leeren darfst du auch nicht Erase nehmen, sondern nur (z.B):
Redim Sig(1 to 10)
AW: Array auf Inhalt prüfen
23.04.2021 18:03:51
NW
Interessanter Punkt - gleich ausprobiert, aber funktioniert auch nicht.
Ich lass mir die Werte immer im Überwachungsfenster anzeigen :-)
Zuerst hat Sig 4 Elemente mit Strings drin
Nach Erase hat es nix mehr
IsEmpty gibt trotzdem False zurück
Wenn ich ReDim nehme mit Sig(0) hat es immernoch ein Element drin, was leer ist
IsEmpty ist trotzdem False
Das kann doch überhaupt nicht sein .......
Ich zweifele langsam an einem Verstand
Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 18:07:39
onur
Das Problem ist, das du das Array als String deklarierst - Nimm Variant.
Bei String haben alle Elemente automatisch den Wert "", was NICHT leer bedeutet.
AW: Array auf Inhalt prüfen
23.04.2021 18:18:22
NW
Danke für den Tipp, aber das hatte ich bereits getestet, da ich in einem anderen Thread gelesen habe, dass Variant nie leer sind.
Deswegen habe ich es auf String geändert
AW: Array auf Inhalt prüfen
23.04.2021 18:27:57
NW
Ist wohl ein bekanntes Problem und ich hab schon etliche Threads gesehen, aber keins sagt, wie ich es löse :-(
http://www.office-loesung.de/ftopic429612_0_0_asc.php
Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 18:45:49
onur
Hast du dir denn meine Datei nicht angeguckt ?
AW: Array auf Inhalt prüfen
23.04.2021 18:50:33
Daniel
Hi
IsEmpty wird nur dann wahr, wenn du es auf eine reine Variantvariable anwendest, die noch nie dimensioniert oder der noch nie ein Wert zugewiesen wurde.
das funktioniert also nur für die allererste Prüfung nach dem Dim X.
vielleicht gehts ja so, dass du die Variable, um sie zu leeren einfach mit ReDim X(0) dimensionierst.
dann kannst du im Ubound(x) = 0 ermitteln, ob sie leer ist oder ob du Werte zugeweisen hast.
oder du lässt parallel eine boolsche Variable mitlaufen, die du auf True setzt, wenn du Werte ins Array schreibst und auf False, wenn du das Array leerst.
Dann fragst du diese Variable ab.
Gruß Daniel
Anzeige
AW: Array auf Inhalt prüfen
23.04.2021 19:08:27
NW
Danke für den Tipp.
Das funktioniert tatsächlich.
Vielen Dank- Endlich eine Lösung - ich war schon am verzweifeln :P

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige