![]() |
|
#1
|
|||
|
|||
|
I am trying to write a macro that copies a document and then deletes sections of text in the copy that are bookmarked. The code works fine if I preset the bookmark names in an array statement, but now I am converting the code to a userform that has four checkboxes. Checking one of the three removes one bookmarked section of text and checking the 4th removes all of the sections defined by the first 3 bookmarks. (Therefore, if the checks the 4th box, the others become unchecked and the 4th is unchecked if he checks any of the first 3.)
I’ve set the array as follows, with the variables becoming the bookmark name when their checkbox values are true: BkmarkName = Array(Cond1, Cond2, Cond3, Cond4) However, unchecked boxes mean some of the “Cond” variables are blank, and this causes an error in the code that deletes the bookmark text. I tried an error trap. Which works sometimes but not always. I tried a statement that builds the array text to include only those variables with a length of greater than 1 but the macro doesn’t read it as an array. There must be a way to accomplish what I’m trying to do but I’m coming up with blanks. Any help is appreciated – code is attached. |
|
#2
|
||||
|
||||
|
Are you over-thinking this? Clearly your macro does not give the whole picture, but I would have thought
Code:
Set myCopy = Documents.Add(ActiveDocument.FullName)
With frmPrint
On Error Resume Next
Select Case True
Case .chk1.Value
myCopy.Bookmarks("hire").Range.Delete
Case .chk2.Value
myCopy.Bookmarks("void").Range.Delete
Case .chk3.Value
myCopy.Bookmarks("bright").Range.Delete
Case .chk4.Value
myCopy.Bookmarks("load").Range.Delete
End Select
End With
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#3
|
|||
|
|||
|
Yes, much! I got locked into select case being only for testing conditions of one variable and didn't realize I could use it as a boolean test. I was over-thinking it. Thanks, Graham, for helping me "under-think" it.
|
|
#4
|
|||
|
|||
|
On further testing, I found that as soon as the code encountered a true condition when checking the checkboxes, it stopped looking at the other tests in the select case statement. I had to change them to individual if statements to make the above code work properly.
|
|
#5
|
||||
|
||||
|
Since the checkboxes are not mutually exclusive, I would use a function
Code:
Sub aTest()
Set myCopy = Documents.Add(ActiveDocument.FullName)
ProcessCheckbox frmPrint.chk1, "hire", myCopy
ProcessCheckbox frmPrint.chk2, "void", myCopy
ProcessCheckbox frmPrint.chk3, "bright", myCopy
ProcessCheckbox frmPrint.chk4, "load", myCopy
End Sub
Function ProcessCheckbox(aCtl As Control, sBkmk As String, myCopy As Document)
If aCtl.Value = True Then
If myCopy.Bookmarks.Exists(sBkmk) Then
myCopy.Bookmarks(sBkmk).Range.Delete
End If
End If
End Function
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
#6
|
|||
|
|||
|
This looks better. Thanks much, Andrew!
|
|
| Tags |
| array, bookmark, variable |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| can word: make variables, find appropriate pages, fill out pages with variables, print only those | 20GT | Word VBA | 1 | 10-15-2014 09:48 PM |
Document Variables vs CustomDocumentProperties
|
Cosmo | Word VBA | 2 | 08-11-2014 01:35 PM |
| Onenote equations and variables | debun | OneNote | 0 | 04-15-2014 10:43 AM |
| Find and replace using variables | jago25_98 | Word | 1 | 01-31-2012 04:30 AM |
Nesting Variables SET, LISTNUM, and REF
|
Wyskers | Word | 1 | 11-13-2011 05:43 AM |