Word: Eingabefelder erstellen und verwenden (Inhaltssteuerelemente, Variablen)
In Microsoft Word kann man sehr einfach eigene Eingabefelder in ein Dokument oder Formular einbauen, in welche Anwender Daten eingeben sollen.
Diese Eingabefelder sind Inhaltssteuerelemente und werden in vba Word Macros als ContentControls geführt
Diese Contentcontrols können zur Laufzeit nach dem eingegebenen Text abgefragt werden.
Somit kann man die Inhaltssteuerelemente als Dokument Variablen verwenden.
'< Init >
Dim sContentControl_Name As String
sContentControl_Name = "ctlFeld1"
'</ Init >
|
Man findet die Inhaltssteuerelemente unter Menü->Entwicklertools->Aa [Nur-Text-Inhaltssteuerelement]
Wenn man ein Eingabefeld eingefügt hat, dann wird dieses hervorgehoben mit einem kleinen Kennzeichnungslabel
Reine Text-Eingabe Felder werden unter Aa Nur-Text-Inhaltssteuerelemente hinzugefügt
Wenn man das Eingebefeld markiert und auf Eigenschaften klickt, dann werden die möglichen Einstellungen zu diesem Eingabefeld dargestellt
Unter dem Feld: Titel gibt man den Text an, welcher über dem Eingabefeld angezeigt werden soll, wenn man das Inhaltssteuerelement markiert hat
Unter dem Feld: Tag gibt man eine eindeutige Benennung zum Feld, welche man im vba Makro Code wiederfinden kann
Für manche Vorgänge ist es sinnvoll, das Optionsfeld: Das Inhaltssteuerelement kann nicht gelöscht werden zu aktivieren.
Dadurch kann man nicht versehentlich dieses Feld löschen. Allerdings kann dann auch nicht mit „Cut & Paste“ das Feld verändern
Verwendung im vba Makro
Die Verwendung der Inhaltssteuerelemente wird wichtig, wenn man diese per Makro abfrägt.
Dieses Makro frägt zum Beispiel den Wert eines Eingabefeldes ab und zeigt den eingegebenen Wert in einer Meldung an.
Man findet die Inhaltssteuerelement unter den ContentControls eines Dokuments.
Während der Verwendung unter den vba Makros muss man zunächst prüfen, ob das Feld überhaupt vorhanden ist:
'< check Control exists >
Dim bControl_Exists As Boolean
bControl_Exists = False
Dim control As ContentControl
For Each control In doc.ContentControls
If control.Tag = sContentControl_Name Then
bControl_Exists = True
Exit For
End If
Next
If bControl_Exists = False Then
MsgBox "Das Eingabefeld existiert nicht", vbCritical, "Eingabefeld fehlt"
Exit Sub
End If
'</ check Control exists >
|
Ein Feld kann übernommer werden mit
Dim control As ContentControl
Set control = doc.ContentControls(“Eingabefeld01”)
|
Anschliessend liest man den Text aus dem Feld.
Der Eingabetext in einem Inhaltssteuerelement wird abgefragt mit
Hier der komplette vba Makro Code als Sample
Sub Demo_Get_Inputfield()
'-----------------< Demo_Get_Inputfield() >-----------------
Dim doc As Document
Set doc = Application.ActiveDocument
'----< Jump to Bookmark >----
'< Init >
Dim sContentControl_Name As String
sContentControl_Name = "ctlFeld1"
'</ Init >
'< check Control exists >
Dim bControl_Exists As Boolean
bControl_Exists = False
Dim control As ContentControl
For Each control In doc.ContentControls
If control.Tag = sContentControl_Name Then
bControl_Exists = True
Exit For
End If
Next
If bControl_Exists = False Then
MsgBox "Das Eingabefeld existiert nicht", vbCritical, "Eingabefeld fehlt"
Exit Sub
End If
'</ check Control exists >
MsgBox "Eingabe ist=" & control.range.Text
'-----------------</ Demo_Get_Inputfield() >-----------------
End Sub
|
Tutorial als Video
|