![]() |
|
#1
|
||||
|
||||
![]() For example, where the tables of interest are bookmarked as Tbl1, Tbl2, and Tbl3, respectively: Code:
Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean) 'The following code conditionally adds a new row, with content controls, to the designated table. Dim i As Long, j As Long, Prot As Variant, StrBkMk As String Const Pwd As String = "" 'Insert password (if any) here 'Bookmarking the table provides the flexibility of being able to deal with the addition/deletion ' of other tables before the one we want to process. With CCtrl 'Check that the Content Control is within our bookmarked range. ' One could test for a particular table instead If (.Range.InRange(ActiveDocument.Bookmarks("Tbl1").Range) = False) And _ (.Range.InRange(ActiveDocument.Bookmarks("Tbl2").Range) = False) And _ (.Range.InRange(ActiveDocument.Bookmarks("Tbl3").Range) = False) Then Exit Sub 'Get the number of ContentControls in the table i = .Range.Tables(1).Range.ContentControls.Count 'Get our ContentControl's index # in the table j = ActiveDocument.Range(.Range.Tables(1).Range.Start, .Range.End).ContentControls.Count 'Check that we're using the last content control If i <> j Then Exit Sub StrBkMk = .Range.Tables(1).Range.Bookmarks(1).Name End With 'Solicit user input If MsgBox("Add new row?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub With ActiveDocument ' Un-protect the document, if applicable Prot = .ProtectionType If .ProtectionType <> wdNoProtection Then Prot = .ProtectionType .Unprotect Password:=Pwd End If With .Bookmarks(StrBkMk).Range.Tables(1) 'Insert an empty paragraph after our table, then replace it with a replica of the last row With .Rows.Last.Range .Next.InsertBefore vbCr .Next.FormattedText = .FormattedText End With .Range.Bookmarks.Add (StrBkMk) 'Reset all content controls in the new last row For Each CCtrl In .Rows.Last.Range.ContentControls With CCtrl If .Type = wdContentControlCheckBox Then .Checked = False If .Type = wdContentControlRichText Or .Type = wdContentControlText Then .Range.Text = "" If .Type = wdContentControlDropdownList Then .DropdownListEntries(1).Select If .Type = wdContentControlComboBox Then .DropdownListEntries(1).Select If .Type = wdContentControlDate Then .Range.Text = "" End With Next End With ' Re-protect the document, if applicable .Protect Type:=Prot, Password:=Pwd End With End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#2
|
|||
|
|||
![]()
Dear macropod,
Thanks for the help. This works well for me! As mentioned earlier, I have 3 tables which I have already bookmarked the tables of interest as Tbl1, Tbl2, Tbl3. Each of these tables have 3 columns and 1 row. At the last column/last row/last cell, instead of one content control, I have multiple content controls, where the last content control (bottom most) is named as "Resolve Date". As such, when the user is prompted to add a new row, in the new row itself, the bookmark location will be shifted (it will not be in the exact spot “Resolve Date” as in the first row that I want it to be) and the user will be prompted to enter new row again at multiple content controls, not at the content control named as “Resolve Date”. I have sought Mr Gregory's opinion on this and he has kindly advised me to modify my code to look for a specific tag/name upon ContentControl on Enter. I tried to incorporate another conditional if statement as follows: If CCtrl.Title = "Resolve Date" Then If MsgBox("Add new row?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub End If However this does not work. Are you able to advise how I should modify my code pls? Thanks. |
#3
|
|||
|
|||
![]()
Hi Macropod,
Thanks for the reply earlier. I have actually found another method to solve this from Mr Gregory's webpage which is to add a command button in the QAT to append row in the table. This works well for me too. Thank you very much! |
#4
|
||||
|
||||
![]() Quote:
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
![]() Quote:
|
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
ScotsMaverick | Mail Merge | 25 | 11-04-2021 02:07 PM |
![]() |
bloomhaven | Word VBA | 3 | 03-11-2015 04:08 PM |
Creating VBA Code to Delete Empty Column in Table | Faugs | Word VBA | 5 | 08-07-2014 03:29 PM |
![]() |
VBLearner | Word VBA | 1 | 03-09-2014 08:42 PM |
VBA sort table code | mikec | Excel Programming | 8 | 10-01-2013 04:37 PM |