Basic Newbie Question: What's the ":=" operator for?

T

termiflyer

I think the subject says it all. For some reason I can't find it in
any references online.

Thanks
 
C

Charles Kenyon

It declares named parameters.
--
Charles Kenyon

Word New User FAQ & Web Directory: http://addbalance.com/word

Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide) http://addbalance.com/usersguide

See also the MVP FAQ: http://www.mvps.org/word which is awesome!
--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.
 
C

Charles Kenyon

Sub AutoExecUnloadGlobal()
' Written 1 April 2002 by Charles Kenyon
' Automatically unloads this global template
' Put in AutoExec procedure
'
MsgBox prompt:="Sorry, " & ThisDocument.Name _
& " cannot act as a global template.", _
Title:=ThisDocument.Name & " improperly loaded", _
Buttons:=vbExclamation
AddIns(ThisDocument.FullName).Installed = False
End Sub

ThisDocument.SaveAs FileName:=sDocFullPathNew, FileFormat:= _
wdFormatTemplate, LockComments:=False, Password:="",
AddToRecentFiles:= _
False, WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False

MsgBox _
prompt:="This template has been saved in the directory:" _
& vbCrLf & Word.Options.DefaultFilePath(wdUserTemplatesPath) _
& vbCrLf & "as " & ThisDocument.Name & ".", _
Title:="Template save completed!"

Sub TemplatesPathIsMacro()
'
' TemplatesPathIsMacro Macro
' Macro written 3 December 2001 by Charles Kyle Kenyon
'
Dim sUserTemplatesLocation As String
Dim sWorkgroupTemplatesLocation As String
Dim sStartUpTemplatesLocation As String
'
sUserTemplatesLocation = Options.DefaultFilePath(wdUserTemplatesPath) &
"\"
sWorkgroupTemplatesLocation =
Options.DefaultFilePath(wdWorkgroupTemplatesPath) & "\"
sStartUpTemplatesLocation = Options.DefaultFilePath(wdStartupPath) & "\"
'
MsgBox prompt:="The user templates are in:" & vbCrLf _
& sUserTemplatesLocation & vbCrLf & vbCrLf _
& "The Workgroup Templates are in:" & vbCrLf _
& sWorkgroupTemplatesLocation & vbCrLf & vbCrLf _
& "The Startup (Add-In) Templates are in:" & vbCrLf _
& sStartUpTemplatesLocation, _
Title:="Templates location settings"
End Sub

Private Sub LockUnlockFormToggleV()
' Toggle macro to protect / unprotect form
' Written by Charles Kenyon
Dim oDoc As Document
Set oDoc = ActiveDocument
If oDoc.ProtectionType <> wdNoProtection Then
oDoc.Unprotect
Else
If oDoc.ProtectionType = wdNoProtection Then
oDoc.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True
End If
End If
End Sub


Private Sub DetachDoc()
' Written by Charles Kyle Kenyon on December 1, 2003
'
Dim sTemplatesPath As String
sTemplatesPath =
Application.Options.DefaultFilePath(wdUserTemplatesPath)
With ActiveDocument
.UpdateStylesOnOpen = False
.AttachedTemplate = _
sTemplatesPath & "\Normal.dot"
End With
End Sub

Above are some code snippets using named parameters. Otherwise, you list
your parameters, separated by commas, in order. This makes code (somewhat)
easier to read.
--
Charles Kenyon

Word New User FAQ & Web Directory: http://addbalance.com/word

Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide) http://addbalance.com/usersguide

See also the MVP FAQ: http://www.mvps.org/word which is awesome!
--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.
 
T

termiflyer

See if I interpret this correctly. These are the same:

oDoc.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True

and

oDoc.Protect(wdAllowOnlyFormFields, True)

Using named parameters only makes the code more readable, nothing else?
 
J

Jay Freedman

termiflyer said:
See if I interpret this correctly. These are the same:

oDoc.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True

and

oDoc.Protect(wdAllowOnlyFormFields, True)

Using named parameters only makes the code more readable, nothing
else?

Not quite... there's one more wrinkle in there.

If you omit the parameter names, then you must have at least a comma for
every possible parameter up to the one just before the last value you
supply, and you have to put the values in the order specified by the syntax
diagram in the help. If you use the names, then you can include only the
ones you're actually giving values for, in any order.

As an example, take the MsgBox function. The full syntax is

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Let's say I want to supply values for the prompt and title parameters, and
accept the defaults for buttons, helpfile, and context. If I supply
parameters by position (that is, without the names), then I have to write

MsgBox("Hello", , "My Title")

Notice the empty second comma, which serves as a placeholder for the buttons
parameter.

If I use the names, then I can put in just the prompt and title without
worrying about any of the default values, and I can even supply the values
out of order:

MsgBox(title:="My Title", prompt:="Hello")

One other thing: Use the parentheses around the parameters only if you're
going to use the return value of the function; if you're using it as a
statement, omit the parentheses. See
http://word.mvps.org/FAQs/MacrosVBA/BracketsWithArgmnts.htm for explanation.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top