Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: prüfen, ob globale Variable gefüllt

VBA: prüfen, ob globale Variable gefüllt
21.03.2023 17:24:35
Joschi Witchcraft

Hallo Forum,

ich brauche wieder einmal eine kleine Unterstützung:

In einer Funktion ist eine globale Variable mit "Public Infox As Variant" definiert.
Innerhalb der Funktion wird diese Variable nun dimensioniert:

ReDim Infox(1 To InfoxCnt, 1 To 4)

Diese Funktion wird unter anderem in der Open-Routine aufgerufen. Die Variable sollte also immer gefüllt sein.

Mein Problem: wenn jetzt durch einen Fehler (während der Testphase) die Verarbeitung abgebrochen wird, dann geht (anscheinend) auch der Inhalt von globalen Variablen verloren.

Nun zur Frage: wie kann ich abfragen, ob die oben genannte Variable gefüllt ist? Mit "if Nothing" hatte ich keinen Erfolg.

Gruß Joschi

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: prüfen, ob globale Variable gefüllt
21.03.2023 17:53:40
onur
Warum dimensionierst du die Variable nicht (wie es sich gehört) in einem allg. Modul als Public ?
WO wird die Variable gefüllt?
Du weisst schon, dass bei jedem REDIM ohne PRESERVE der gesamte Inhalt gelöscht wird?


AW: VBA: prüfen, ob globale Variable gefüllt
21.03.2023 18:22:32
GerdL
Hallo Joschi,

MsgBox CBool(VarType(Infox))
Was macht die IIf-Funktion?
Gbit es da noch 'ne Antwort?

Gruß Gerd


Anzeige
AW: VBA: prüfen, ob globale Variable gefüllt
21.03.2023 19:18:01
Mullit
Hallo,

auf Nothing prüft man Objekte, Variants i.allg. so:
If IsEmpty(Infox) Then
Gruß, Mullit


AW: VBA: prüfen, ob globale Variable gefüllt
21.03.2023 21:06:29
Joschi Witchcraft
Hallo Yal.

Die richtige Dimension war für mich kein Problem.

Hallo Gerd

Das Beispiel mit CBool habe ich nicht verstanden. Auch Google konnte mich nicht weiterbringen.

Hallo Mullit.

Danke für Deinen Hinweis auf IsEmpty. Damit konnte ich nun mein Problem lösen.

Danke an alle, die mir geantwortet haben.

Gruß Joschi


Anzeige
AW: VBA: prüfen, ob globale Variable gefüllt
21.03.2023 19:19:49
Yal
Hallo Joschi,

die Dimensionierung eines Arrays ruft man mit "UBound" (Upperbound. Es gibt auch einen LBound). Diese erzeugt in bestimmte Fälle Fehler.

Spiel-Code (er tut nichts, er will nur spielen):
Public Arr As Variant

Sub test()

    Arr = Array() 'Dummy-Init: Arr ist dann 0 to -1 dimensioniert
    Debug.Print UBound(Arr)
    Debug.Print UBound(Arr, 1) 'gleich wie ohne 1
    ' Debug.Print UBound(Arr, 2) verursacht Fehler, weil Arr nur ein-dimensional

'eigene, Fehlertolerante Function
    Debug.Print UBound0(Arr, 1)
    Debug.Print UBound0(Arr, 2)

'Klassische UBound
    ReDim Arr(1 To 3, 1 To 5)
    Debug.Print UBound(Arr, 1)
    Debug.Print UBound(Arr, 2)
End Sub

Public Function UBound0(Arr, Optional Dimension = 1)
On Error Resume Next
    UBound0 = -1 'Default value
    UBound0 = UBound(Arr, Dimension)
End Function
Man könnte in der eigenen, fehlertoleranten Function in dem Stand das Nachteil sehen, dass es keine Unterschied gemacht wird, ob die zweite Dimension definiert oder tatsächlich -1 ist. Aber eine zweite Dimension kann nicht "0 to -1" sein (UBound LBound). Diese Stand erreicht man nur mit = Array(). Und diese erzeugt nur ein-dimensionalen Arrays.

VG
Yal

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige