View Single Post
 
Old 09-19-2017, 11:56 AM
slaycock slaycock is offline Windows 7 64bit Office 2013
Expert
 
Join Date: Sep 2013
Posts: 255
slaycock is on a distinguished road
Default

There are a number of mistakes

i would recommend you google

vba if statement
vba declaring variables
vba set statement

ActiveDocument.Paragraphs(6).Range

Range is a property that returns a range object

it can be used in two ways.

1. to access further properties so you can set a value

e.g

Code:
ActiveDocument.Paragraphs(6).Range.Text="Hello world"
2. assign the range to another variable

Code:
set myRange = ActiveDocument.Paragraphs(6).Range.Text="Hello world"
means that myRange points to the range of paragraph(6) of the active document.

Range is an 'object' which is why you have to use set rather than just

Code:
myRange = ActiveDocument.Paragraphs(6).Range.Text="Hello world"
as in

Code:
myInteger = 4
So at the moment you code does not use the value returned by the statement

Code:
ActiveDocument.Paragraphs(6).Range

The variable myRange is declared but nothing is ever assigned to it.

The if statement exists in two forms (three if you want to b pedantic)

1. Use on a single line

If <condition> then <do something

2 Use over a number of lines

if <condition then
<do something>
ElseIf <condition> then
<do something else>
Else
< do stuff not captured by the above conditions>
End if

The else and elseif are optional statements. Else can only occur once but elseif can occur as many times as you want.

Your code misses out the mandatory Then and does not close with the End if.

The third version is called the immediate if and is a shorthand versions of

If <condition> then
do one statement
Else
do one statement
end if

and takes the form

<value> =Iif(<condition>, true statement, false statement)


Its very commonly used when you need to set a variable to one of two values depending on something that happened elsewhere.
Reply With Quote