VBA 加入范围

VBA Join Ranges

所以我有一个恒定的 7 个范围,它们都是一个单元格宽度和一个大的任意高度,它们之间是相同的。是否可以加入范围,以便我有一个范围只包含所有 7 个范围?我试过 UnionRange 函数,但它 returns 的数字比预期的要大得多。

这是我目前拥有的:

' acquire the range of each column, using its coumn number and the user-defined Col_Letter function
    Dim rng1 As Range
    Set rng1 = Sheets("sheet_name").Range(Col_Letter(col_1) & ":" & Col_Letter(col_1) & LRow)
    Dim rng2 As Range
    Set rng2 = Sheets("sheet_name").Range(Col_Letter(col_2) & ":" & Col_Letter(col_2) & LRow)
    Dim rng3 As Range
    Set rng3 = Sheets("sheet_name").Range(Col_Letter(col_3) & ":" & Col_Letter(col_3) & LRow)
    Dim rng4 As Range
    Set rng4 = Sheets("sheet_name").Range(Col_Letter(col_4) & ":" & Col_Letter(col_4) & LRow)
    Dim rng5 As Range
    Set rng5 = Sheets("sheet_name").Range(Col_Letter(col_5) & ":" & Col_Letter(col_5) & LRow)
    Dim rng6 As Range
    Set rng6 = Sheets("sheet_name").Range(Col_Letter(col_6) & ":" & Col_Letter(col_6) & LRow)
    Dim rng7 As Range
    Set rng7 = Sheets("sheet_name").Range(Col_Letter(col_7) & ":" & Col_Letter(col_7) & LRow)

    ' Join the ranges of each column into one range
    Dim UnionRange As Range
    Set UnionRange = Union(rng1, rng2, rng3, rng4, rng5, rng6, rng7)
    Debug.Print "Width of UnionRange: " & UnionRange.width
    Debug.Print "Height of UnionRange: " & UnionRange.height

尝试使用 unionrange.rows.count 和 unionrange.columns.count 代替,宽度和高度可能使用边界单元格地址之间的差异而不是计算它

您不能 运行 UNION() 来自不同工作sheet 的范围。 范围 仅限于单个 sheet.

上的一组单元格

编辑#1:

我怀疑你的Debug.Print。您打印的是 pixel 相关变量,而不是 row count

Sub dural()
   Dim r As Range
   Set r = Range("A1:C5")
   MsgBox r.Height & vbCrLf & r.Rows.Count
End Sub

我通过获取行号边界解决了这个问题:

Dim FirstRow As Long, LastRow As Long    
With Get_Workbook.Sheets("Sheet_Name").UsedRange
     FirstRow = .Row
     LastRow = .Rows(UBound(.Value)).Row
End With

从那里,我将我的代码修改为这种格式:

Dim rng1 As Range
Set rng1 = Get_Workbook.Sheets("Sheet_Name").Range(Col_Letter(col_1) & FirstRow & ":" & Col_Letter(col_1) & LastRow)

这样,我已经用我的 Col_Letter 函数找到了正确的列字母,我也可以获得正确的使用范围。

请注意 Get_Workbook 和 Col_Letter 是用户定义的函数。