habe eine dumme Frage. Ist es richtig, wenn ich eine Variable bei Public deklariere muss ich sie nirgend anders mehr deklarieren?
Mach das sinn?
Set wksdatei = Workbooks("Datei.xls")
beim Start von Excel Deklariert und dann
Dim wksdatei as Worksbook
Dutzendfach in den Makros. Also immer wenn ich auf die Datei zugreife.' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************
Option Explicit
Private Sub Workbook_Open()
Call init
End Sub
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public objWB As Workbook
Sub init()
Set objWB = Workbooks.Open("E:\Forum\test.xlsx")
End Sub
Sub einMakro()
If objWB Is Nothing Then Call init
'dein Code
End Sub
Sub anderesMakro()
If objWB Is Nothing Then Call init
'dein Code
End Sub
ALT + F11 drückst.Public-Anweisung, um die Variable zu deklarieren.
Public wksdatei As WorkbookWorkbook_Open-Prozedur.
Private Sub Workbook_Open()
Set wksdatei = Workbooks("Datei.xls")
End Subwksdatei in beliebigen Modulen verwenden, ohne sie erneut zu deklarieren.Fehler: "Variable nicht definiert"
Option Explicit am Anfang deines Moduls hast. Das zwingt dich, alle Variablen zu deklarieren.Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"
Wenn du keine Public-Variablen verwenden möchtest, kannst du stattdessen:
Sub Beispiel()
Dim lokaleVariable As Integer
lokaleVariable = 10
Call FunktionMitParameter(lokaleVariable)
End Sub
Sub FunktionMitParameter(ByVal wert As Integer)
' Verwendung des Parameters
End Sub
Hier ist ein Beispiel, wie du eine Public-Variable in einem Modul nutzen kannst:
' Modul1
Public wksdatei As Workbook
Sub InitWorkbook()
Set wksdatei = Workbooks.Open("E:\Forum\test.xlsx")
End Sub
Sub VerwendeWorkbook()
If wksdatei Is Nothing Then
Call InitWorkbook
End If
' Dein Code hier
End Sub
In diesem Beispiel wird die globale Variable wksdatei in mehreren Prozeduren verwendet, ohne dass sie in jeder Prozedur neu deklariert werden muss.
Const für unveränderliche Werte:
Public Const.
Public Const WbEx = "Datei.xls"Public-Variablen in einem speziellen Modul an, um die Übersichtlichkeit zu erhöhen.1. Muss ich eine Public-Variable in jedem Modul deklarieren?
Nein, eine Public-Variable wird einmal pro Projekt deklariert und ist dann in allen Modulen verfügbar.
2. Was ist der Vorteil von Public-Variablen?
Sie ermöglichen den Zugriff auf Daten in verschiedenen Modulen, ohne sie mehrfach deklarieren zu müssen.
3. Wie initialisiere ich eine Public-Variable richtig?
Initialisiere sie in einer Prozedur, z.B. beim Öffnen des Workbooks, um sicherzustellen, dass sie bereit ist, verwendet zu werden.
4. Gibt es einen Nachteil bei der Verwendung von globalen Variablen?
Ja, sie können den Code schwerer verständlich machen und die Wartbarkeit beeinträchtigen, wenn sie nicht sorgfältig verwaltet werden.