PDA

Vollständige Version anzeigen : Globale Variablen in Word 2016


HerbLeh
23.09.2019, 08:55
Ich habe wöchentlich Schülerlisten mit unterschiedlichen Fächern auszufüllen. Bei allen Listen gilt es in der Kopfzeile zwei Daten anzugeben: 'Wochenstart tt.mm.jjjj' und 'Wochenende tt.mm.jjjj'.
Bei allen Listen muss ich die Daten momentan von Hand einfügen.
Mein Wunsch wäre, mit einer einfachen Lösung 'globale Variable' dafür zu sorgen, dass die bei der ersten Liste von mir wöchentlich eingetragenen Datumsangaben für alle folgenden Listen bei deren Aufruf automatisch eingetragen werden.
Dazu muss ich allerdings sagen, dass ich von VBA nur wenig Ahnung habe und eine 'einfache Lösung' auf Makro-Ebene bevorzugen würde. Vielleicht über einen temporären Eintrag in der Registry? Wie schreibt Word Werte in die Registry und wie liest es sie aus und übergibt den Wert an eine Variable?
Gibt es da jemanden mit einer 'einfachen' Idee?:rolleyes:
Danke im Voraus:mrcool:

G.O.Tuhls
23.09.2019, 15:32
Dann erzähl uns doch mal, wie diese Listen aufgebaut sind. Vllt reichen Datumsfelder in der Kopfzeile.

Gruß
G.O.

HerbLeh
25.09.2019, 12:48
Natürlich geht es nur um die Datumsfelder in den Kopfzeilen.
Der Inhalt und der Aufbau der Listen ist hierbei völlig uninteressant;) .
Ich habe wöchentlich neun solch gleichartiger Listen auszufüllen und muss bei jeder das Wochenanfangs- und Wochenend-Datum in die Kopfzeile setzen. Genau das möchte ich automatisieren :grins:, und zwar so, dass ich das von Hand nur bei der ersten Liste machen muss. Diese Daten sollen dann über ein 'auotopen'-Makro auch in die anderen Listen eingetragen werden.:mrcool:

G.O.Tuhls
25.09.2019, 14:52
Ich verstehe das Problem nicht.
Du sagst, es geht nur um die KopfZ, ber bringst dann wieder Deine Listen ins Spiel.
Egal wohin, mit einem {REF}-Feld kannst Du das Datum doch überall hin kopieren.

Gruß
G.O.

haklesoft
25.09.2019, 15:23
Hallo,

mit ein wenig VBA-Code könntest Du beim Start der Vorlage bzw. des Dokuments die gewünschten Datumsangaben vortragen lassen, sofern es sich um die aktuelle Woche handelt. Dann brauchst Du nicht einmal zusätzliche Variablen oder händische Eingaben.

Und wenn das Datum mal nicht passt, kannst Du bei den Steuerelementen jeweils per Mausklick einen Ausnahmetag festlegen.Option Explicit

' Codevorschlag für Formular mit zwei benannten(!!!) Datumsauswahl-Inhaltssteuerelementen
' Code in einem Standard-Modul

' Wenn es sich um eine Vorlage handelt:
Public Sub AutoNew()
setzeDatum
End Sub

' Wenn es sich um ein Dokument handelt:
Public Sub AutoOpen()
setzeDatum
End Sub


Sub setzeDatum()
Dim ccDatum As ContentControl
For Each ccDatum In ActiveDocument.ContentControls
Select Case ccDatum.Tag
Case "Montag"
ccDatum.Range.Text = getMontag
Case "Freitag"
ccDatum.Range.Text = getFreitag
End Select
Next
End Sub

Function getMontag(Optional dDate As Date) As Date
dDate = IIf(dDate = vbEmpty, Date, dDate)
getMontag = DateAdd("d", DatePart("w", dDate, vbMonday) * -1 + 1, dDate)
End Function

Function getFreitag(Optional dDate As Date) As Date
getFreitag = DateAdd("d", 4, getMontag(dDate))
End Function