Range.Columns和Range.EntireColumn有什么区别

Lau*_*ent 5 excel vba

Dim r as Range
Set r = Range("C2:D3")

Dim r1 as Range, r2 as Range
Set r1 = r.EntireColumn
Set r2 = r.Columns
Run Code Online (Sandbox Code Playgroud)

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

Lan*_*rts 7

不,EntireColumn表示范围"C:D",列表示范围中单元格的列.如果你想看到这个,这里有一个显示这个的小子.在整个范围C2:D3中放置非零值,然后将一些值放在C5和D5中.C5和D5中的值不会随着Columns(range1)而改变,现在替换EntireColumn(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
Run Code Online (Sandbox Code Playgroud)

此外,Columns已建立索引,因此您可以引用第一列,如:

r.Columns(1)
Run Code Online (Sandbox Code Playgroud)