我希望用户输入一系列单元格,例如A1:Z26。我尝试过添加引文,我尝试过有2个输入框,一个用于范围的开头和结尾。但它每次都会出错:< object_global的方法范围失败'
我知道这是一个简单的语法问题(我认为)所以任何人都可以指出我在如何让用户输入适用于set rng = range(msg)
Sub iterationLoop()
Dim rng As Range, iteration As Range
msg = "What is the range you'd like to look at: (e.g. A1:B2)"
InputBox (msg)
Set rng = Range(msg)
For Each iteration In rng
iteration.Select
If iteration = vbNullString Then
iteration = "add value"
MsgBox ("Cell: " & Selection.Address & " has no value")
End If
Next
End Sub
答案 0 :(得分:4)
Application.InputBox
允许您指定输入类型。类型8对应于范围。这将允许用户使用鼠标选择范围或手动输入:
Sub test()
Dim rng As Range
Set rng = Application.InputBox("Select by mouse or enter (e.g. A1:B2) the range you'd like to look at:", Type:=8)
MsgBox rng.Address
End Sub
如果您打算让其他人使用您的代码,您应该将Application.InputBox
调用包装在一些错误处理代码中,因为如果用户按下Cancel
,上面的代码会引发运行时错误。类似的东西:
On Error Resume Next
Set rng = Application.InputBox("Select by mouse or enter (e.g. A1:B2) the range you'd like to look at:", Type:=8)
If Err.Number > 0 Then
MsgBox "No Range Selected"
Exit Sub
End If
On Error GoTo 0
(尽管你可能想做一些比退出sub更有用的东西)
答案 1 :(得分:3)
AADD
Dim rngstr as string
然后使用输入框使用:
rngstr = inputbox(msg)
set rng = Range(rngstr)