Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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

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

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


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


Anzeige
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


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

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige