Excel 设置选定范围宏的格式
我想格式化我选择的一个范围,以简化目前的事情,只需顶部的一行为红色,其余的部分为白色 当我的选择从A1开始时,一切正常,但是当我的选择在工作表的更远处开始时,我的格式会偏离选择 我已经很久没有和VBA打过球了,所以我为这个菜鸟问题道歉 这是我的密码:Excel 设置选定范围宏的格式,excel,vba,Excel,Vba,我想格式化我选择的一个范围,以简化目前的事情,只需顶部的一行为红色,其余的部分为白色 当我的选择从A1开始时,一切正常,但是当我的选择在工作表的更远处开始时,我的格式会偏离选择 我已经很久没有和VBA打过球了,所以我为这个菜鸟问题道歉 这是我的密码: Sub formatrange() Dim myRng As Range Set myRng = Selection Dim lc As Long Dim lr As Long lr = myRng.Rows.Count lc = myRng.C
Sub formatrange()
Dim myRng As Range
Set myRng = Selection
Dim lc As Long
Dim lr As Long
lr = myRng.Rows.Count
lc = myRng.Columns.Count
myRng.Range(myRng.Cells(1, 1), myRng.Cells(1, lc)).Interior.Color = RGB(153, 0, 0)
myRng.Range(myRng.Cells(2, 1), myRng.Cells(lr, lc)).Interior.Color = RGB(255, 255, 255)
End Sub
非常感谢大家。我认为问题在于您的
lr
变量。这将填充所选内容中的行数。但是,如果从第3行开始有10行,那么第10行不是最后一行,第12行是。所以你需要包括一些东西,比如
lr=lr+myRng.行-1
将行数转换为行数
当然,上一篇专栏文章也是如此请尝试以下代码:
Public Sub FormatRange()
Dim myRng As Range
Set myRng = Selection
Dim lc As Long, lr As Long
lc = myRng.Columns.Count
lr = myRng.Rows.Count
myRng.Resize(1, lc).Interior.Color = RGB(153, 0, 0)
myRng.Offset(1, 0).Resize(lr - 1, lc).Interior.Color = RGB(255, 255, 255)
End Sub
myRng
引用选定范围,而myRng.Resize()
更改引用的行数和列数。另外,myRng.Offset()
将引用向下和向右移动指定的量
因此,我从myRng
中选择了左上角的引用,并用选择了顶行。Resize(1,lc)
I通过向下移动一行并选择带有偏移量(1,0)的lr-1
行来“选择”剩余表格。调整大小(lr-1,lc)
使用myRng.Resize(n,m)
代替范围(myRng.Cells(1,1),myRng.Cells(n,m))
总是比较干净的