VBA Excel-如何知道一个范围内的数据布局

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

我想在excel中编写一个VBA函数,用户可以通过select单个单元格,单元格范围或两者的组合,在application.inputbox中input多个单元格。 一旦input,我想检查错误的值等

我可以input范围没有问题,但似乎需要一种方法来检查范围,以确定其布局,所以我可以find值。 看起来值的位置随用户如何select单元而变化。

假设用户select4个单元格。 A1,A2,C2,F5与拖动selectA1:A2,然后点击C2,F5。

在这两种情况下Inputs.Count是4。

在第一种情况下,input(1) – input(4)不返回选定的值。 在这里,在第一种情况下,这些值在4个不同的区域中显示为单个单元格。

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

我有两个问题 – 1:是否有一个简单的方法来确定我要检查的数据在哪里(即范围的布局),而不检查所有的区域/单元计数?

2:我在哪里可以find使用范围的可访问阅读。

最好的,拜伦

selectA1,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是不可靠的 – 其他人给出一致的结果,但范围最初被选中。