Excel 如何展开所选的application.inputbox?

Excel 如何展开所选的application.inputbox?,excel,vba,Excel,Vba,我有一个列表,用户从列表中选择一些单元格。不是范围,只是随机单元(如:A8、A2、A5..)。我无法打开这些数据,比如在消息框中 Sub ex81() Dim r As Range Set r = Application.InputBox("choose cells:", Type:=8) ca = Application.CountA(r) For i = 1 To ca: MsgBox r(i) Next End Sub 在这段代码中

我有一个列表,用户从列表中选择一些单元格。不是范围,只是随机单元(如:A8、A2、A5..)。我无法打开这些数据,比如在消息框中

Sub ex81()
    Dim r As Range
    Set r = Application.InputBox("choose cells:", Type:=8)
    ca = Application.CountA(r)
    For i = 1 To ca:
        MsgBox r(i)
    Next
End Sub
在这段代码中,如果选择了A2、A5、A7,它将显示A2、A3、A4-他只知道第一个单元格以及选择了多少单元格

  • 包括用户按下取消按钮时的错误处理
  • 对每个循环使用
    ,以循环所有选定的单元格
  • 例如:

    Option Explicit
    
    Public Sub ex81()
        Dim ChosenCells As Range
        On Error Resume Next 'next line throws error if user presses cancel
        Set ChosenCells = Application.InputBox(Prompt:="choose cells:", Type:=8)
        On Error GoTo 0 'always re-activate error handling
    
        If ChosenCells Is Nothing Then Exit Sub 'exit if user pressed cancel
    
        Dim iCell As Range
        For Each iCell In ChosenCells.Cells
            MsgBox iCell.Address
        Next iCell
    End Sub
    

    扩展错误:如果用户取消提示,您会得到一个
    变量/布尔值
    ,不能用
    设置
    关键字分配;如果您省略了
    Set
    关键字,那么如果用户选择一个
    范围
    ,您将得到该范围的
    ,即一个2D
    变量
    数组,而不是
    范围
    对象。理想情况下,
    Application.InputBox
    函数将封装在一个小型专用函数中,该函数可以在需要时重用,而不是内联使用。