Range对象InputBox问题(空值)
Range object InputBox problem (empty value)
我有一个宏要求用户达到 select 范围,然后它继续:
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
当范围被 selected 时,一切都很好。
但是当用户只是按 Enter 而没有 selecting 任何范围时,我得到错误:
我尝试检查 rng.value
、rng.count
,但没有成功。
如果什么都没有 selected,我只想要一个简单的 Exit Sub。
对建议函数的可能修改:
Public Function IsAddressValid(myAddress As String) As Boolean
On Local Error Resume Next
IsAddressValid = Range(myAddress).Rows.Count > 0
End Function
以下示例显示了如何正确使用 InputBox
到 select 范围。它将抛出一个消息框 “用户按下取消” 或用户 selected.
的范围
Option Explicit
Public Sub InputBoxExample()
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "user pressed cancel"
Exit Sub
Else
MsgBox "user selected " & rng.Address, False, False
End If
End Sub
如果您按 OK 而没有 select 任何内容,您会收到您在问题中显示的消息。这是 InputBox
的行为,消息不是来自 VBA,因此无法更改。实际上,该消息的原因是用户被迫输入有效地址(或在地址中解析的公式)或按取消中止 selecting.
您实际上可以 做的是抑制该框的所有 警报。但不是具体的那个。
Application.DisplayAlerts = False
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
On Error GoTo 0
Application.DisplayAlerts = True
这将关闭来自该 InputBox 的 所有 警报。因此,如果您选择任何无效(或什么都不选择),确定 按钮将什么都不做,直到您在框中输入有效地址或按 取消。
我有一个宏要求用户达到 select 范围,然后它继续:
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
当范围被 selected 时,一切都很好。 但是当用户只是按 Enter 而没有 selecting 任何范围时,我得到错误:
我尝试检查 rng.value
、rng.count
,但没有成功。
如果什么都没有 selected,我只想要一个简单的 Exit Sub。
对建议函数的可能修改:
Public Function IsAddressValid(myAddress As String) As Boolean
On Local Error Resume Next
IsAddressValid = Range(myAddress).Rows.Count > 0
End Function
以下示例显示了如何正确使用 InputBox
到 select 范围。它将抛出一个消息框 “用户按下取消” 或用户 selected.
Option Explicit
Public Sub InputBoxExample()
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "user pressed cancel"
Exit Sub
Else
MsgBox "user selected " & rng.Address, False, False
End If
End Sub
如果您按 OK 而没有 select 任何内容,您会收到您在问题中显示的消息。这是 InputBox
的行为,消息不是来自 VBA,因此无法更改。实际上,该消息的原因是用户被迫输入有效地址(或在地址中解析的公式)或按取消中止 selecting.
您实际上可以 做的是抑制该框的所有 警报。但不是具体的那个。
Application.DisplayAlerts = False
On Error Resume Next
Set rng = Application.InputBox("Select a cell", "Make it happen!", Type:=8)
On Error GoTo 0
Application.DisplayAlerts = True
这将关闭来自该 InputBox 的 所有 警报。因此,如果您选择任何无效(或什么都不选择),确定 按钮将什么都不做,直到您在框中输入有效地址或按 取消。