VBA如何从选定的单元格中获取值

时间:2016-12-13 23:27:36

标签: excel-vba vba excel

我需要将选定单元格中的数据放到数组中。怎么做?我找不到任何例子。我知道如何通过ActiveCell.Value从一个单元格获取价值,但它如何通过多种选择来实现。猜猜我应该选择范围作为对象变量并通过foreach循环处理它。有人可以为它写一个例子吗?

解决方案:

Sub Button1_Click()

For Each OneCell In Selection
 MsgBox (OneCell.Value)
Next


End Sub

2 个答案:

答案 0 :(得分:1)

Application.Selection并不总是Range(例如,如果选择了Shape(s)或ActiveX Control),Selection.Value会根据所选内容返回不同的内容:< / p>

  • 如果仅选择一个单元格,则为单元格值
  • 如果选择了多个单元格,则选择2D变体单元格值数组
  • 如果所选对象不具有.Value属性
  • ,则会出错

如果选择了多个区域,.Value仅返回第一个区域的值。

If TypeOf Selection Is Excel.Range Then
    Debug.Print Selection.Address(0, 0)

    For Each area In Selection.Areas
        Debug.Print area.Address(0, 0)
    Next
Else
    Debug.Print TypeName(Selection)
End If

Locals窗口可以更轻松地查看Application.Selection

的内容

答案 1 :(得分:0)

您不必使用OneCell.Value,因为单元格本身保存该值。 如果您想获得单元格公式,请使用OneCell.FormulaR1C1

    For Each OneCell In Selection
        MsgBox (OneCell)
    Next OneCell