首页 > 解决方案 > 如何展开选择的application.inputbox?

问题描述

我有一个列表,用户从列表中选择一些单元格。不是范围,只是随机单元格(例如: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 - 他只知道第一个单元格以及选择了多少单元格。

标签: excelvba

解决方案


  1. Cancel包括对用户按下按钮的情况的错误处理。
  2. 使用For Each循环遍历所有选定的单元格。

例子:

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

推荐阅读