VBA Excel-如何了解范围内的数据布局

VBA Excel-如何了解范围内的数据布局,vba,excel,Vba,Excel,我是一个Excel VBA新手,虽然我有几年的编程经验 我正在尝试在excel中编写VBA函数,用户可以通过选择单个单元格、单元格范围或两者的组合,在application.inputbox中输入多个单元格。输入后,我想检查值是否存在错误等 我可以毫无问题地输入范围,但似乎需要一种方法来检查范围以确定其布局,以便找到值。值的位置似乎随用户选择单元格的方式而变化 假设用户选择4个单元格。A1、A2、c2、f5 vs拖动选择A1:A2,然后单击c2、f5 在这两种情况下,输入。计数为4 在第一种情况

我是一个Excel VBA新手,虽然我有几年的编程经验

我正在尝试在excel中编写VBA函数,用户可以通过选择单个单元格、单元格范围或两者的组合,在application.inputbox中输入多个单元格。输入后,我想检查值是否存在错误等

我可以毫无问题地输入范围,但似乎需要一种方法来检查范围以确定其布局,以便找到值。值的位置似乎随用户选择单元格的方式而变化

假设用户选择4个单元格。A1、A2、c2、f5 vs拖动选择A1:A2,然后单击c2、f5

在这两种情况下,输入。计数为4

在第一种情况下,输入(1)-输入(4)不返回所选值。 这里,在第一种情况下,值在4个不同区域中显示为单个单元格

在第二种情况下,输入(1)-输入(4)确实返回选定的值,但这些值显示为三个区域。一个区域有两个单元格(两行一列),两个区域各有一个单元格

我有两个问题- 1:是否有一种简单的方法可以确定我要检查的数据的位置(即范围的布局),而无需检查所有面积/单元计数

2:在哪里可以找到关于使用范围的可访问阅读

最好的,
Byron在选择A1、A2、B3、D4后比较了几种方法

Sub tester()

Dim c As Range, a As Range, x As Long, s

    Debug.Print Selection.Areas.Count

    Debug.Print "###By cell count"
    s = ""
    For x = 1 To Selection.Cells.Count
        s = s & " " & Selection.Cells(x).Address()
    Next x
    Debug.Print s

    Debug.Print "###For Each cell"
    s = ""
    For Each c In Selection.Cells
        s = s & " " & c.Address()
    Next c
    Debug.Print s

    Debug.Print "###Looping through areas"
    s = ""
    For Each a In Selection.Areas
        For x = 1 To a.Cells.Count
            s = s & " " & a.Cells(x).Address()
        Next x
    Next a
    Debug.Print s

End Sub
输出:

###By cell count
 $A$1 $A$2 $A$3 $A$4
###For Each cell
 $A$1 $A$2 $B$3 $D$4
###Looping through areas
 $A$1 $A$2 $B$3 $D$4

唯一的方法#1是不可靠的-其他方法给出的结果是一致的,但范围最初是选定的。

你的要求真的很不清楚+我看到要求外部资源,这是离题的。我只能给你
ActiveCell.Address
ActiveCell.Row
ActiveCell.Column
来获取位置。然后编写一个函数/子函数来计算位置并提供结果。检查所有单元格是否在同一列或同一行等的内容。完美@Tim Williams,-非常感谢。我会投票支持的,但我的代表不多。