Microsoft Office Forums Code to add new row in table

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 09-08-2015, 08:17 AM
ksigcajun ksigcajun is offline Code to add new row in table Windows 7 64bit Code to add new row in table Office 2010 64bit
Advanced Beginner
Code to add new row in table
 
Join Date: May 2014
Posts: 77
ksigcajun is on a distinguished road
Default Code to add new row in table

I initially wanted this code to prompt for the addition of a new row in a table. What the easiest way to change the code where it only prompts in one specific table and not every table in my word document.

Do I need to name the specific table somehow first?

Thanks for the help!

PHP Code:
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
With Selection.Range
  
If .Information(wdWithInTableThen
    
If .Cells(1).RowIndex = .Tables(1).Range.Cells _
                            
(.Tables(1).Range.Cells.Count).RowIndex Then
      
If .Cells(1).ColumnIndex = .Tables(1).Range.Cells _
                                 
(.Tables(1).Range.Cells.Count).ColumnIndex Then
        
If MsgBox(" Do you want to add a new row to the table?"_
                  vbQuestion 
vbYesNo"Question") = vbYes Then
          InsertRowWithContent


        End 
If
        
Set p_oTargetRow Selection.Rows(1)
      
End If
    
End If
  
End If
End With
End Sub 
Reply With Quote
  #2  
Old 09-08-2015, 04:22 PM
Guessed's Avatar
Guessed Guessed is offline Code to add new row in table Windows 7 32bit Code to add new row in table Office 2010 32bit
Expert
 
Join Date: Mar 2010
Location: Canberra/Melbourne Australia
Posts: 1,260
Guessed has a spectacular aura aboutGuessed has a spectacular aura aboutGuessed has a spectacular aura about
Default

Do the other tables need to be in the Content Control too? That would be a simple fix if not.

The way I normally 'identify' a table is by applying a specific table style to it. The table style could have all the same attributes as the other tables but it allows you to test that attribute and hence you can have the macro only run if the 'right' table style is applied to the table.
__________________
Andrew Lockton
Chrysalis Design, Melbourne Australia
Reply With Quote
  #3  
Old 09-08-2015, 05:13 PM
macropod's Avatar
macropod macropod is offline Code to add new row in table Windows 7 64bit Code to add new row in table Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 19,541
macropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to beholdmacropod is a splendid one to behold
Default

I'd normally do this kind of thing via an on-exit macro:
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
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.
Const StrBkMk As String = "TblBkMk"
'Exit if we're not in a table - we don't really need this is using a bookmarked table,
' but it's a safeguard against the bookmark having been expanded/moved.
If Selection.Range.Information(wdWithInTable) = False Then Exit Sub
With ActiveDocument
  If .Bookmarks.Exists(StrBkMk) = False Then
    MsgBox "The table bookmark: '" & StrBkMk & "' is missing." & vbCr & _
    "Please add it to the relevant table before continuing.", vbExclamation
    Exit Sub
  End If
End With
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(StrBkMk).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
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 Selection.Tables(1).Rows
    'Insert an empty paragraph after our table, then replace it with a replica of the last row
    With .Last.Range
      .Next.InsertBefore vbCr
      .Next.FormattedText = .FormattedText
    End With
    'Reset all content controls in the new last row
    For Each CCtrl In .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
The above code assumes the table is bookmarked 'TblBkMk'. As per the comments in the code, this allows for the possibility that other tables might be inserted/deleted before the one you're interested in. If you're not concerned about that, you could delete:
Code:
'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.
Const StrBkMk As String = "TblBkMk"
'Exit if we're not in a table - we don't really need this is using a bookmarked table,
' but it's a safeguard against the bookmark having been expanded/moved.
If Selection.Range.Information(wdWithInTable) = False Then Exit Sub
With ActiveDocument
  If .Bookmarks.Exists(StrBkMk) = False Then
    MsgBox "The table bookmark: '" & StrBkMk & "' is missing." & vbCr & _
    "Please add it to the relevant table before continuing.", vbExclamation
    Exit Sub
  End If
End With
and change:
Code:
  'Check that the Content Control is within our bookmarked range.
  ' One could test for a particular table instead
  If .Range.InRange(ActiveDocument.Bookmarks(StrBkMk).Range) = False Then Exit Sub
to:
Code:
  'Check that the Content Control is within our table.
  If .Range.InRange(ActiveDocument.Tables(#).Range) = False Then Exit Sub
where # is your table number.
__________________
Cheers,
Paul Edstein
[MS MVP - Word]

Last edited by macropod; 09-08-2015 at 08:03 PM. Reason: Revised code, with more commenting
Reply With Quote
  #4  
Old 09-09-2015, 04:56 AM
ksigcajun ksigcajun is offline Code to add new row in table Windows 7 64bit Code to add new row in table Office 2010 64bit
Advanced Beginner
Code to add new row in table
 
Join Date: May 2014
Posts: 77
ksigcajun is on a distinguished road
Default

Quote:
Originally Posted by macropod View Post
where # is your table number.
It's the first table in the document and should be the only table being asked to add a row.

Thanks!
Reply With Quote
Reply

Thread Tools
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
Code to add new row in table Code to disable spacing between cells in table properties 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
Colour code mail merge header table cell backgrounds ScotsMaverick Mail Merge 3 06-13-2014 03:05 AM
Code to add new row in table VBA Code to take data from a table in word document and place it in a summary table VBLearner Word VBA 1 03-09-2014 08:42 PM
VBA sort table code mikec Excel Programming 8 10-01-2013 04:37 PM


All times are GMT -7. The time now is 07:50 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2019 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft