我试图在行是偶数的情况下为行着色,并且该行中的列B不是空白。 如果是第1行,我实际上需要在区域A1到L1中进行着色而不是整行。
当然可以定义一个颜色范围,但是我想要一个解决方案来检查包含内容的最后一列,然后将所有行从B1到最后一列用内容IF列B着色在当前行中不是空的,当前行是偶数。
我当前的代码正确地对行进行着色,但对整行进行着色,因为我已经使用了.Entirerow。有没有一种天才的方式只能在最后一次使用的列之前进行着色?
Sub farve()
Dim rw As Range
Dim rng As Range
Set rng = ActiveSheet.UsedRange
For Each rw In rng.Rows
If rw.row Mod 2 = 0 And Range("B" & rw.row) <> "" Then
rw.EntireRow.Interior.Color = RGB(255, 0, 0)
End If
Next rw
End Sub
答案 0 :(得分:2)
根据上述评论
Sub farve()
Dim rw As Range
Dim rng As Range
Dim c As Long
Set rng = ActiveSheet.UsedRange
c = Cells(5, Columns.Count).End(xlToLeft).Column
For Each rw In rng.Rows
If rw.Row Mod 2 = 0 And Range("B" & rw.Row) <> "" Then
Range(Cells(rw.Row, 2), Cells(rw.Row, c)).Interior.Color = RGB(255, 0, 0)
End If
Next rw
End Sub
答案 1 :(得分:1)
尝试将其作为条件格式规则。
public class YourClass implements WithLog, WithMetrics {
public void someLongMethod() {
this.logger().info("Starting long method execution...");
long start = System.nanoTime();
// do some very long action
long end = System.nanoTime();
this.logger().info("Finished long method execution");
this.metrics().reportExecutionTime("Long method: ", end - start);
}
}
答案 2 :(得分:0)
不是天才,有一个简单的:
lColumn = ws.Cells(rw.row, Columns.Count).End(xlToLeft).Column
答案 3 :(得分:0)
您可以尝试稍微不同的方法,仅将rng
定义为B列(直到带有数据的最后一行),然后仅扫描B列。
Option Explicit
Sub farve()
Dim rw As Range
Dim rng As Range
' set the range to column B only, until last cell with data
Set rng = ActiveSheet.Range("B1:B", Cells(Rows.Count, "B").End(xlUp).Row)
For Each rw In rng.Rows
If rw.Row Mod 2 = 0 And rw.Value <> "" Then
rw.Resize(1, Cells(rw.Row, Columns.Count).End(xlToLeft).Column - 1).Interior.Color = RGB(255, 0, 0)
End If
Next rw
End Sub