选择最小范围?

时间:2018-11-16 10:44:07

标签: excel vba excel-vba formatting range

我正在使用一个VBA,该VBA应该建立选定范围的单元格,并且只能选择选定范围内的活动单元格。

如果我的选择只包含整列,我已经弄清楚了如何工作。 但是,如果我在活动单元格内的某个范围内进行选择,我将无法正常工作。

是否可以选择包含最少单元格数量的范围。 在这种情况下,查看rngrng1中哪个是“最小”。

Sub FormatColumn()
Dim rngMyRange As Range
Dim rng As Range
Dim Start As Range
Set rngMyRange = Selection
Dim A As Range, B As Range

With rngMyRange
    i = .Rows(1).Row
    j = .Columns(1).Column
    ii = .Rows(.Rows.Count).Row
    jj = .Columns(.Columns.Count).Column
End With

Set A = Cells(i, j)
Set B = Cells(ii, jj)
Set C = Cells(i, jj).End(xlDown)

Set rng = Range(A, B)
Set rng1 = Range(A, C)

With rng
    .Font.Bold = True
End With

With rng1
    .Interior.ColorIndex = 20
End With

End Sub

因此,我只想最后使用两个格式化规则之一(按如下所示进行划分,以了解两个范围的情况),并且仅格式化其中单元格数量最少的范围。

1 个答案:

答案 0 :(得分:1)

借助@SRJ

Sub FormatColumn()
Dim rngMyRange As Range
Dim rng As Range
Dim Start As Range
Set rngMyRange = Selection
Dim A As Range, B As Range, rng1 As Range, C As Range
Dim i As Long, j As Long, ii As Long, jj As Long

With rngMyRange
    i = .Rows(1).Row
    j = .Columns(1).Column
    ii = .Rows(.Rows.count).Row
    jj = .Columns(.Columns.count).Column
End With
Debug.Print i, j, ii, jj
Set A = Cells(i, j)
Set B = Cells(ii, jj)
Set C = Cells(i, jj).End(xlDown)

Set rng = Range(A, B)
Set rng1 = Range(A, C)

If rng.count < rng1.Count Then
    With rng
    .Font.Bold = True
End With
Else
With rng1
    .Interior.ColorIndex = 20
End With
End If

End Sub
相关问题