Range.Columns和Range.EntireColumn有什么不同?

Dim r as Range Set r = Range("C2:D3") Dim r1 as Range, r2 as Range Set r1 = r.EntireColumn Set r2 = r.Columns 

两个范围都不代表范围“C:D”吗? 两者有什么区别?

不,EntireColumn表示范围“C:D”,Columns表示范围内单元格的列。 如果你想看到这个在行动,这是一个小的显示这个。 在整个范围C2:D3中放置非零值,然后在C5和D5中放置一些值。 C5和D5中的值不会随Columns(range1)而改变,现在replaceEntireColumn(range2),看看会发生什么。

 Sub Test() Dim range1 As Range Dim range2 As Range Set range1 = Range("C2:D3").Columns Set range2 = Range("C2:D3").EntireColumn range1.Value = 0 End Sub 

此外, Columns是索引,所以你可以引用第一列如:

 r.Columns(1)