1.3k Aufrufe
Gefragt in Tabellenkalkulation von rolandaa Einsteiger_in (27 Punkte)
Hallo,

gibt es im Excel-VBA eine Möglichkeit in einem Makro eine "Constante" zu hinterlegen, die ich aber ggf. ändern kann ohne das VBA umzuschreiben.

zB:: merk = 1

über ein UserForm im Feld "merk" wird diese nach aufruf angezeigt, nach dem ändern auf 2 speichert er das im VBA zurück, das nach dem schließen von Excel und erneutem öffnen der Wert 2 im Feld "merk" vorhanden ist.

hoffe ich hab das einiger masen verständlich geschrieben.

Danke im voraus.

rolandaa

3 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Roland,

Constanten können nicht verändert werden, schreibe den Wert in eine Zelle und weise ihn beim starten zu.

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Roland,

siehe VBA-Hilfe zu Public-Anweisung

Wird auf Modulebene verwendet, um öffentliche Variablen zu deklarieren und den dafür erforderlichen Speicher zu reservieren.

Syntax:
Public [WithEvents] VarName[([Indizes])] [As [New] Typ] [,[WithEvents] VarName[([Indizes])] [As [New] Typ]] . . .


MfG Charlotte
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Ich verwende dazu gern benutzerdefinierte Dokumenteigenschaften (siehe Datei - Eigenschaften - Anpassen). Kann man auch mittels VBA erstellen, ändern, auslesen.

Angenommen eine UserForm1 mit TextBox1 und CommandButton1 nebst Eigenschaft "Zähler" der Mappe

Bei Aufruf der Form Auslesen der Eigenschaft:
Private Sub UserForm_Initialize()
On Error Resume Next
UserForm1.TextBox1.Value = ActiveWorkbook.CustomDocumentProperties("Zähler").Value
End Sub

(on error... falls Eigenschaft noch nicht existiert)

Erzeugen/Ändern der Eigenschaft auf eingegebene Zahl im Textfeld bei Klick auf Button:
Private Sub CommandButton1_Click()
On Error Resume Next
With ActiveWorkbook.CustomDocumentProperties
.Add Name:="Zähler", _
LinkToContent:=False, _
Type:=msoPropertyTypeNumber, _
Value:=CInt(TextBox1.Value)
End With
ActiveWorkbook.CustomDocumentProperties("Zähler") = CInt(TextBox1.Value)
Unload UserForm1
End Sub

mfg, Massaraksch
...