VBA InputBox - A Complete Guide
VBA InputBox - A Complete Guide
Guide
Contents [hide]
1 Important
2 InputBox Syntax
3 InputBox Parameters
4 VBA Optional Parameters
5 InputBox Title Parameter
6 InputBox Default Parameter
7 InputBox Type Parameter Options
o 7.1 Getting the Range
8 Related Reading
9 What’s Next?
10 Get the Free eBook
Important
Confusingly there are two InputBoxes in Excel VBA.
1. Application.InputBox
2. InputBox(also calledVBA.InputBox)
1. Application.InputBox allows you to specify the variable type of result e.g. String, integer,
date, range.
2. The Application.InputBox parameters Left and Top are not used by VBA.
In, the example below, the Application.InputBox allows you to specify the type but
the VBA.InputBoxdoesn’t:
InputBox Syntax
InputBox prompt, title[optional], default [optional], left[optional], top[optional],
helpfile[optional], Left[optional]
InputBox Parameters
prompt – this is the text displayed by the InputBox e.g. “Please enter a number between one and
ten”, “Please select a range”.
title[optional] – this is the text that is displayed in the title bar of the InputBox.
default[optional]– this will be the response if no response is entered by the user.
left[optional] – not used. If you need to position the InputBox you need to use the
VBA.InputBox.
top[optional] – not used. If you need to position the InputBox you need to use the
VBA.InputBox.
helpfile[optional] – specifies a related help file if your application has one(hint: it probably
doesn’t unless it is a legacy application.)
helpfilecontextidl[optional] – specifies a position in the help file.
type[optional] – specifies the type of value that will be returned. If this parameter is not used
then the return type is text. See below for a list of options for this parameter.
What makes using the InputBox simple is that you really only need to use 4 of these parameters,
namely prompt, title, default and type.
VBA Optional Parameters
As, we saw in the above section, VBA has a lot of optional parameters. Sometimes we want to
use an optional parameter but don’t need the optional parameters before it. We can deal with this
in two ways:
You can see that naming the parameters is a better idea as it makes the code much more readable
and understandable.
0 Formula
Value Type
1 Number
2 String
8 Range
64 Array of values
You can create your own constants for the Type parameter if you want your code to be more
readable:
IBFormula = 0
IBNumber = 1
IBString = 2
IBBoolean = 4
IBRange = 8
IBError = 16
IBArray = 64
End Enum
Dim rg As Range
If you leave out the Set keyword you will get the runtime error 91: “object variable or with block
not set”.
In VBA we can declare the variable as a variant in VBA. This means that VBA will set the type
at runtime:
Dim rg2
If we replace the Set keyword with a variant then the InputBox will return an array of values
instead of the range object:
Dim rg As Variant