Ich habe folgenden Code geschrieben:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Und ich bekomme die Fehlermeldung:
"ungültiges Attribut in Sub oder Funktion"
Weißt du was ich falsch gemacht habe?
Ich habe versucht, Global
anstelle von zu verwenden Public
, bekam aber das gleiche Problem.
Ich habe versucht, die Funktion selbst als `Public zu deklarieren, aber das hat auch nichts gebracht.
Was muss ich tun, um die globale Variable zu erstellen?
excel
vba
scope
global-variables
Nimrod
quelle
quelle
Function
/Sub
, nicht nur außerhalb: "Variablen auf Modulebene können mit einer Dim- oder Private-Anweisung am oberen Rand des Moduls über der ersten Prozedurdefinition deklariert werden." (aus Umfang der Variablen in Visual Basic für Anwendungen )Dies ist eine Frage zum Umfang .
Wenn die Variablen nur die Lebensdauer der Funktion haben sollen, deklarieren Sie die Variablen mit
Dim
(kurz für Dimension ) in der Funktion oder im Sub:Eine globale Variable (wie SLaks hervorhob) wird außerhalb der Funktion mit dem
Public
Schlüsselwort deklariert. Diese Variable ist während der Lebensdauer Ihrer laufenden Anwendung verfügbar. Im Fall von Excel bedeutet dies, dass die Variablen verfügbar sind, solange diese bestimmte Excel-Arbeitsmappe geöffnet ist.Sie können auch Variablen verwenden, auf die nur innerhalb eines bestimmten Moduls (oder einer bestimmten Klasse) zugegriffen werden kann, indem Sie sie mit dem
Private
Schlüsselwort deklarieren.Wenn Sie eine große Anwendung erstellen und globale Variablen verwenden möchten, würde ich empfehlen, ein separates Modul nur für Ihre globalen Variablen zu erstellen. Dies soll Ihnen helfen, sie an einem Ort im Auge zu behalten.
quelle
Um globale Variablen zu verwenden, fügen Sie ein neues Modul aus der VBA-Projektoberfläche ein und deklarieren Sie Variablen mit
Global
quelle
Public
und mit demGlobal
Schlüsselwort?Public
undGlobal
sind in ihrer Funktion nahezu identisch ..Global
stammt aus älteren Versionen von VB"Die Frage ist wirklich über Umfang, wie der andere Typ es ausdrückte.
Kurz gesagt, betrachten Sie dieses "Modul":
In dieser MSDN-Referenz finden Sie weitere Informationen zur Variablendeklaration und in dieser anderen Frage zum Stapelüberlauf. Dort erfahren Sie mehr darüber, wie Variablen den Gültigkeitsbereich verlassen.
Zwei weitere schnelle Dinge:
quelle
Wenn sich diese Funktion in einem Modul / einer Klasse befindet, können Sie sie einfach außerhalb der Funktion schreiben
Global Scope
. Globaler Bereich bedeutet, dass auf die Variable von einer anderen Funktion in demselben Modul / derselben Klasse zugegriffen werden kann (wenn Siedim
als Deklarationsanweisung verwenden, verwendenpublic
Sie , wenn Sie möchten, dass alle Funktionen in allen Modulen auf die Variablen zugreifen können):quelle
Erstellen Sie eine öffentliche Ganzzahl in der Allgemeinen Erklärung.
Dann können Sie in Ihrer Funktion den Wert jedes Mal erhöhen. Siehe Beispiel (Funktion zum Speichern von Anhängen einer E-Mail als CSV).
quelle
Eine gute Möglichkeit, öffentliche / globale Variablen zu erstellen, besteht darin, das Formular wie ein Klassenobjekt zu behandeln, Eigenschaften zu deklarieren und mit Public Property Get [Variable] auf Eigenschaft / Methode zuzugreifen. Möglicherweise müssen Sie auch eine Referenz auf das instanziierte Formularmodul verweisen oder übergeben. Sie erhalten Fehler, wenn Sie Methoden für geschlossene Formulare / Berichte aufrufen.
Beispiel: Übergeben Sie Me.Form.Module.Parent an Sub / Funktion, die sich nicht in der Form befindet.
Im anderen Modul können Sie also auf Folgendes zugreifen:
Wenn Sie Late Binding wie ich verwenden, suchen Sie immer nach Nullwerten und Objekten, die Nothing sind, bevor Sie versuchen, eine Verarbeitung durchzuführen.
quelle
Auch können Sie verwenden -
Es wurde im Büro 2010 getestet
quelle