Inserting text gathered from InputBox

C

Cissy

Hi, I'm using Word 03. I'm missing something here, but I want to insert the
text obtained from the user responding to the InputBox, here's what I have:

Sub newtest()
Dim Message, Title, Default
Dim MyValue As String

Selection.TypeParagraph
Selection.TypeText ("BLACKLINE OF ")
Message = "Blackline of "
Title = "Blackline Footer"
Default = "1"
MyValue = InputBox(Message, Title, Default)
ActiveDocument.Content.InsertAfter ("MyValue") 'does not work

End Sub

Thanks for any advice.
 
J

Jean-Guy Marcil

Cissy was telling us:
Cissy nous racontait que :
Hi, I'm using Word 03. I'm missing something here, but I want to
insert the text obtained from the user responding to the InputBox,
here's what I have:

Sub newtest()
Dim Message, Title, Default
Dim MyValue As String

Selection.TypeParagraph
Selection.TypeText ("BLACKLINE OF ")
Message = "Blackline of "
Title = "Blackline Footer"
Default = "1"
MyValue = InputBox(Message, Title, Default)
ActiveDocument.Content.InsertAfter ("MyValue") 'does not work

End Sub
Well, there are many things that are not quite right... let's start with the
variables:

Dim Message, Title, Default
Dim MyValue As String

My is defined as a String. Good. But what about Message, Title and Default?
It is not good practice to let the compiler decide in your place what type
of variable to use. So, it should be:

Dim Message As String, Title As String, Default As String
Dim MyValue As String

But this is minor.
More major is this:
ActiveDocument.Content.InsertAfter ("MyValue")

Here, you are not telling the compiler to insert the value of the variable
called "MyValue", but to insert the actual text "MyValue". Quotation marks
in code identify the enclosed content as pure text to be used as is.
So, it should have been:
ActiveDocument.Content.InsertAfter MyValue

Next,

Selection.TypeParagraph
Selection.TypeText ("BLACKLINE OF ")

These two, lines tell the compiler to insert a paragraph mark and the text
"BLACKLINE OF " at the cursor position in the document.
Then

ActiveDocument.Content.InsertAfter MyValue

Inserts the value entered by the user in the InputBox at the End of the
document. Content returns a Range representing the whole document (Well, not
quite, the Whole main story).

Is this what you want?

Maybe it should be:

'_______________________________________
'Define the variable for the InputBox
Dim Message As String, Title As String, Default As String
'Define the variable for InputBox result
Dim MyValue As String
'Define the variable for the current range
Dim CurRange As Range


Set CurRange = Selection.Range

Message = "Blackline of "
Title = "Blackline Footer"
Default = "1"
'Get user imput
MyValue = InputBox(Message, Title, Default)
'Use the range from the current selection
With CurRange

'Collpase current selection to end of range in case
'current selection is not an insertion point
.Collapse wdCollapseEnd
'Insert the ¶
.InsertParagraphAfter
'Insert the text
.InsertAfter "BLACKLINE OF " & MyValue
End With
'_______________________________________

???

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
(e-mail address removed)
Word MVP site: http://www.word.mvps.org
 
C

Cissy

Thank you for taking the time to explain things. It makes sense and now I
have to go fix my other macros! THANKS
 

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