Hallo und guten Tag,
Ich habe ein Problem mit einem Makro in Word 2019.
Das Makro wurde erstellt, um per Button (ist in der ersten Zelle der zweiten Zeile) in einem geschützten Dokument eine Zeile in der 6-spaltigen Tabelle hinzuzufügen, in deren Zellen je ein Formularfeld nur das Ausfüllen der Fomularfelder erlaubt. Also an der Darstellung sollte nichts geändert werden können. Der gewünschte Vorgang per Button wäre: Dokument Entsperren, zur ersten Zelle der zweiten Zeile in der Tabelle springen, eine Tabellen-Zeile unterhalb des Buttons (das ergibt dann die dritte Zeile) hinzufügen, mit etwas Abstand vom oberen Tabellen-Rahmen ein Formularfeld in jede Spalte dieser Zeile einfügen. Und dann zum ersten Formularfeld (mit Datumsformat ) in der Zeile (ganz links) springen. Dann das Dokument wieder schützen.
Das klappt bis und mit Dokument entsperren. Aber ab da wird es komisch, denn beim hinzufügen einer neuen leeren Zeile mit Formularfeldern unterhalb der Button-Makroschaltfläche aber überschreibt das Makro jedoch die bereits ausgefüllten Zeilen der Tabelle und macht die gewünschte Zeile dazu. Das sollte nicht sein, denn das Dokument sollte als Tagesjournal dienen, und alles geschriebene sollte natürlich nachgelesen werden können.
Desweiteren wäre es gut wenn die Zeilenhöhe zuerst eine vordefinierte Höhe hätte, und dann je nach Textlänge sich die Zeilenhöhe vergrössert.
Da ich Laie bin auf dem Gebiet, habe ich mir das Makro aus anderen Foren zusammen geschrieben, und mich so in die Sache reingeritten.
Ich wäre froh um Hilfe. Gruss aus der Schweiz, Eric
Office Word 2019, Windows 10 Pro 64b
VBA MakroCode:
Sub Makro44()
ActiveDocument.Unprotect Password:=""
ActiveDocument.Tables(1).Cell(2, 1).Select
'Fügt Zeilen unter der aktuellen Auswahl ein.
Selection.InsertRowsBelow 1
'Zeilenhöhe festlegen
Selection.Rows.SetHeight RowHeight:=InchesToPoints(1.1), _
HeightRule:=wdRowHeightExactly
'Formularfeld Datum einfügen
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
With Selection.FormFields(1)
.Name = "Datum"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = True
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .TextInput
.EditType Type:=wdDateText, Default:="", Format:="dd.MM.yyyy"
.Width = 10
End With
End With
'Andere Textformularfelder einfügen
ActiveDocument.Tables(1).Cell(3, 1).Select
Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 3
Selection.TypeParagraph
Selection.Font.Size = 12
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 3
Selection.TypeParagraph
Selection.Font.Size = 12
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 3
Selection.TypeParagraph
Selection.Font.Size = 12
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 3
Selection.TypeParagraph
Selection.Font.Size = 12
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveRight Unit:=wdCell
Selection.Font.Size = 3
Selection.TypeParagraph
Selection.Font.Size = 12
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
'Am Schluss zum Datumsfeld springen
ActiveDocument.Tables(1).Cell(3, 1).Select
'Schluss Formularschutz ein
ActiveDocument.Protect Password:="", NoReset:=False, Type:= _
wdAllowOnlyFormFields 'nur Formulareingabe ist erlaubt
End Sub
|