Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dim response As Integer
- Dim myTable As Word.Table
- Dim i As Integer
- Dim lngRows As Long
- Dim lngCols As Long
- Dim LetzteZelle As Word.Cell
- Dim FFZelle As Word.Cell
- Dim myFF As Word.FormField
- Dim rngZelle As Word.Range
- ' Nachfrage neue Zeile
- response = MsgBox("Neue Zeile für Frühdienst einfügen?", vbQuestion + vbYesNo)
- ' Wenn ja neue Zeile einfügen mit Formularfeldern
- If response = vbYes Then
- ' Dokumentschutz entfernen, vorsichtshalber vorher testen, ob aktiviert
- If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
- ActiveDocument.Unprotect
- End If
- ' Tabelle eindeutig in Range packen
- Set myTable = Selection.Tables(1)
- lngRows = myTable.Rows.Count
- lngCols = myTable.Columns.Count
- ' LetzteZelle eindeutig in Range packen
- Set LetzteZelle = myTable.Rows(lngRows).Cells(lngCols)
- ' Makro aus der letzten Zelle entfernen
- LetzteZelle.Range.FormFields(1).ExitMacro = ""
- ' Neue Zeile einfügen, indem im letzten Feld 1x nach rechts gegangen wird
- ' hat den Vorteil, dass die Zeile DANACH und nicht davor eingefügt wird
- LetzteZelle.Select
- Selection.Collapse wdCollapseEnd
- Selection.MoveRight Unit:=wdCell, Count:=1
- ' Formularfelder in die Zellen einfügen
- For i = 1 To lngCols
- Set LetzteZelle = myTable.Rows(lngRows + 1).Cells(i)
- 'Aus dem Range muss das Zellenendzeichen ausgeschlossen werden,
- 'um den Range in einer Wordtabellenzelle "sauber" zu bilden
- Set rngZelle = ActiveDocument.Range(Start:=LetzteZelle.Range.Start, _
- End:=LetzteZelle.Range.End - 1)
- Set myFF = LetzteZelle.Range.FormFields.Add(Range:=rngZelle, _
- Type:=wdFieldFormTextInput)
- With myFF
- '.Name = "xxx" & i
- '.Range.Font.Bold = True
- ' Hier können weitere Eigenschaften des Feldes gesetzt werden
- ' besonders die Name-Eigenschaft ist zum späteren Auswerten sinnvoll
- End With
- ' Makro in die letzte Zeile einfügen
- If i = lngCols Then
- myFF.ExitMacro = "Neue_Zeile_früh"
- Set myFF = Nothing
- Set rngZelle = Nothing
- End If
- Next i
- ' erste Zelle der letzten Zeile aktivieren
- myTable.Rows(lngRows + 1).Cells(1).Select
- ' Protect document
- ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
- Set LetzteZelle = Nothing
- Set myTable = Nothing
- End If
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement