I have a huge vba project in word. I previously had a variable called
"ELet_Heading" in my .dot document. I renamed this to "ELet_RE" and
added a few more variables. When I run the macro its seems to remember
what the previous variables were called and do not count through all
variables although I use the following in VBA:
For Each avar In ActiveDocument.Variables
If avar.Name = "ELet_RE" Then num = avar.Index
Next avar
If num = 0 Then
ActiveDocument.Variables.Add Name:="ELet_RE",
Value:=TextBox2.value
Else
ActiveDocument.Variables(num).Value = Textbox2.value
End If
I do this for each and every variable but when I do the test counting
the variables it only has 10 variables instead of for instance 15
variables and looking at the avar.Name I see that it doesn't run
through all the variable names. Is there a way of clearing / deleting /
removing the variables attached to that template so that it can see the
new variables as well.

Re: WORD VARIABLES NOT CLEARING by Jean-Guy

Jean-Guy
Wed Sep 28 08:03:05 CDT 2005

JJ was telling us:
JJ nous racontait que :

> I have a huge vba project in word. I previously had a variable called
> "ELet_Heading" in my .dot document. I renamed this to "ELet_RE" and
> added a few more variables. When I run the macro its seems to remember
> what the previous variables were called and do not count through all
> variables although I use the following in VBA:
> For Each avar In ActiveDocument.Variables
> If avar.Name = "ELet_RE" Then num = avar.Index
> Next avar
> If num = 0 Then
> ActiveDocument.Variables.Add Name:="ELet_RE",
> Value:=TextBox2.value
> Else
> ActiveDocument.Variables(num).Value = Textbox2.value
> End If
> I do this for each and every variable but when I do the test counting
> the variables it only has 10 variables instead of for instance 15
> variables and looking at the avar.Name I see that it doesn't run
> through all the variable names. Is there a way of clearing / deleting
> / removing the variables attached to that template so that it can see
> the new variables as well.

For this part of your code, you do not need to iterate through all
variables:
ActiveDocument.Variables("ELet_RE").Value = Textbox2.value
will create the variable if it does not exist, or change its value if it
does.

Similarly:
ActiveDocument.Variables("ELet_RE").Value = ""
will in effect delete the variable.

You only need to iterate if you want to read the content of the variable and
it may be possible that the variable does not exist yet. In such cases an
error would be generated, so iteration is necessary. Finally, when
iterating, it would make your code neater (and marginally faster) if you
added an Exit For, as in:

Dim num As Long
Dim avar as Variable

For Each avar In ActiveDocument.Variables
If avar.Name = "ELet_RE" Then num = avar.Index
Exit For 'No need to continue iteration, variable has been found
Next avar
If num = 0 Then
ActiveDocument.Variables.Add Name:="ELet_RE", Value:=TextBox2.value
Else
ActiveDocument.Variables(num).Value = Textbox2.value
End If

Finally, you can clear all variables with:

Dim avar As Variable

For Each avar In ActiveDocument.Variables
avar.Value= ""
Next avar



--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
jmarcilREMOVE@CAPSsympatico.caTHISTOO
Word MVP site: http://www.word.mvps.org



Re: WORD VARIABLES NOT CLEARING by JJ

JJ
Wed Sep 28 08:05:56 CDT 2005


JJ wrote:
> I have a huge vba project in word. I previously had a variable called
> "ELet_Heading" in my .dot document. I renamed this to "ELet_RE" and
> added a few more variables. When I run the macro its seems to remember
> what the previous variables were called and do not count through all
> variables although I use the following in VBA:
> For Each avar In ActiveDocument.Variables
> If avar.Name = "ELet_RE" Then num = avar.Index
> Next avar
> If num = 0 Then
> ActiveDocument.Variables.Add Name:="ELet_RE",
> Value:=TextBox2.value
> Else
> ActiveDocument.Variables(num).Value = Textbox2.value
> End If
> I do this for each and every variable but when I do the test counting
> the variables it only has 10 variables instead of for instance 15
> variables and looking at the avar.Name I see that it doesn't run
> through all the variable names. Is there a way of clearing / deleting /
> removing the variables attached to that template so that it can see the
> new variables as well.


Re: WORD VARIABLES NOT CLEARING by JJ

JJ
Wed Sep 28 08:06:42 CDT 2005

Thanx Christopher - did a search and got a solution.


Re: WORD VARIABLES NOT CLEARING by JJ

JJ
Wed Sep 28 08:45:07 CDT 2005

Thanx for the info. I got the following solution to work.

With ActiveDocument.Variables
For i = .Count To 1 Step -1
.Item(i).Delete
Next i
End With


Re: WORD VARIABLES NOT CLEARING by JJ

JJ
Wed Sep 28 08:45:19 CDT 2005

Thanx. Found the following solution which works well.
With ActiveDocument.Variables
For i = .Count To 1 Step -1
.Item(i).Delete
Next i
End With