无法获取Range类的RowDifferences属性

时间:2018-07-16 22:36:02

标签: excel vba

活动电子表格中有以下数据:

A    B
---  ---
a    a
b
c
d
e

其中B1当前是活动单元格。

“调试”窗格中的以下代码:

Dim rng As Range
Set rng = ActiveSheet.Range("A1:A5").RowDifferences(ActiveCell)

失败:

  

运行时错误'1004':无法获取Range类的RowDifference属性

RowDifferences属性的正确用法是什么?


更新

ColumnDifferences用于上述数据时,我会遇到相同的错误。

Set rng = ActiveSheet.Columns("A").ColumnDifferences(ActiveCell)

即使我转置数据:

A   B   C   D   E
--- --- --- --- ---
a   b   c   d   e
a

并将A2设置为活动单元格,我得到以下相同错误:

Set rng = ActiveSheet.Rows(1).RowDifferences(ActiveCell)

2 个答案:

答案 0 :(得分:2)

  1. 使用ColumnDifferences,因为在这种情况下Range("A1:A5")是一列。
  2. 如果您使用的是RowDifferencesColumnDifferences,则比较单元格必须位于要比较的Range中,例如使用A1而不是B1

为进一步说明,我在B1:B5中添加了其他值。使用A1作为比较单元,下面是RowDifferencesColumnDifferences的结果(Select的结果)。

行差异

Sub TestRowDiff()
    Dim rng As Range

    With Sheets("Sheet2")
        Set rng = .Range("A1:B5").RowDifferences(.Range("A1"))
    End With

    rng.Select
End Sub

enter image description here

在此处选择B1:B5-Excel检查第1至5行,按行比较A列与B列中的单元格。字母“ f”与“ a”不同,“ g”与“ b”不同,依此类推。

列差异

Sub TestColDiff()
    Dim rng As Range

    With Sheets("Sheet2")
        Set rng = .Range("A1:B5").ColumnDifferences(.Range("A1"))
    End With

    rng.Select
End Sub

enter image description here

在这里选择A2:B5,因为“ b”至“ e”与“ a”不同,并且“ g”至“ j”与“ f”不同。

答案 1 :(得分:1)

正如@BigBen在评论中所说,您可能正在这里寻找ColumnDifferences

HereRowDifferences的MSDN文档

hereColumnDifferences

您应该以类似以下内容结束

Set rng = ActiveSheet.Columns("A").ColumnDifferences(ActiveCell)