Prev: Runtime Error 6028: The Range Cannot be Deleted? HELP!
Next: Can't exit design mode because Control 'TextBox' cannot be created
From: Lisa on 5 Oct 2007 09:25 Hi, I've created a custom button that runs a macro that adds a table into my document and formats it using a specific style. Works great. Only issue is if I select an existing table and run the macro it breaks (I get run time error 6028 the range cannot be deleted). I'm pretty new to this so I'm not sure how to fix the code so that if someone tries to run it on an existing table they have selected it won't crash and instead just applies the style BodyTable. The code as it stands is: Sub TableInsert() ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _ 2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed With Selection.Tables(1) If .Style <> "BodyTable" Then .Style = "BodyTable" End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = True .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = True End With Selection.Style = ActiveDocument.Styles("BodyTable") End Sub Any suggests would be greatly appreciated Thanks Lisa
From: Jean-Guy Marcil on 5 Oct 2007 10:20
Lisa was telling us: Lisa nous racontait que : > Hi, > > I've created a custom button that runs a macro that adds a table into > my document and formats it using a specific style. Works great. Only > issue is if I select an existing table and run the macro it breaks (I > get run time error 6028 the range cannot be deleted). I'm pretty new > to this so I'm not sure how to fix the code so that if someone tries > to run it on an existing table they have selected it won't crash and > instead just applies the style BodyTable. The code as it stands is: > > Sub TableInsert() > > ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, > NumColumns:= _ > 2, DefaultTableBehavior:=wdWord9TableBehavior, > AutoFitBehavior:= _ wdAutoFitFixed > With Selection.Tables(1) > If .Style <> "BodyTable" Then > .Style = "BodyTable" > End If > .ApplyStyleHeadingRows = True > .ApplyStyleLastRow = True > .ApplyStyleFirstColumn = True > .ApplyStyleLastColumn = True > End With > Selection.Style = ActiveDocument.Styles("BodyTable") > End Sub > > Any suggests would be greatly appreciated > > Thanks > Lisa You could have both macros in one, i.e., if the current cursor location is not in a table, create and format a table, otherwise just format the table: '_______________________________________ Sub TableFormatInsert() Dim tblFormat As Table If Not Selection.Information(wdWithInTable) Then Set tblFormat = ActiveDocument.Tables.Add(Range:=Selection.Range, _ NumRows:=2, NumColumns:=2, DefaultTableBehavior:=wdWord9TableBehavior, _ AutoFitBehavior:=wdAutoFitFixed) Else Set tblFormat = Selection.Tables(1) End If With tblFormat If .Range.Style <> "BodyTable" Then .Range.Style = "BodyTable" End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = True .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = True End With End Sub '_______________________________________ -- Salut! _______________________________________ Jean-Guy Marcil - Word MVP jmarcilREMOVE(a)CAPSsympatico.caTHISTOO Word MVP site: http://www.word.mvps.org |