将单个单元格范围更改为列范围
下面的代码工作,但现在我需要它的工作范围而不是只有一个单元格范围。 我需要replace:
CJ3单细胞至CJ柱(从第3行开始);
CK3单细胞至CK列(从第3行开始);
CM3单元格到CM列(从第3行开始);
CN3单细胞至CN列(从第3行开始);
CO3单细胞到CO柱(从第3行开始)。
请任何人都可以帮忙?
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("CJ3").Value = "FOLLOW UP" And Range("CM3").Value = "" And Range("CN3").Value = "" Then Range("CO3").Value = "FOLLOW UP" ElseIf Range("CJ3").Value = "FOLLOW UP" And Range("CM3").Value > 0 And Range("CN3").Value = "" Then Range("CO3").Value = "AWAITING APPROVAL" ElseIf Range("CJ3").Value = "FOLLOW UP" And Range("CM3").Value > 0 And Range("CN3").Value > 0 Then Range("CO3").Value = "CLOSED" ElseIf Range("CJ3").Value = "NO FOLLOW UP" And Range("CN3").Value = "" Then Range("CO3").Value = "AWAITING APPROVAL" Range("CK3:CM3").Value = "N/A" ElseIf Range("CJ3").Value = "NO FOLLOW UP" And Range("CN3").Value > 0 Then Range("CO3").Value = "CLOSED" Range("CK3:CM3").Value = "N/A" End If End Sub
我敦促你指定你的代码应该工作的工作表。 它是默认的ActiveSheet。 因此,我的代码与你的几乎没有什么不同。 不同之处在于它是专门写下来的,这样可以帮助你理解你自己的代码,从而加快解决问题的速度(总是比写代码花费更多的时间)。 您也可以指定另一个工作表。 例如, Set Ws = Worksheets("Sheet1")
。 这样做会好很多,因为代码无法在另一张纸上错误地做出来。
所以,这就是你的代码现在看起来像。
Private Sub TryLoop() Dim Ws As Worksheet Dim Rl As Long ' last row Dim R As Long ' row Set Ws = ActiveSheet With Ws Rl = .Cells(.Rows.Count, 1).End(xlUp).Row For R = 1 To Rl If .Cells(R, 88).Value = "FOLLOW UP" And .Cells(R, 91).Value = "" And .Cells(R, 92).Value = "" Then .Cells(R, 93).Value = "FOLLOW UP" End If Next R End With End Sub
Rows.Count
返回活动工作表中的行数(如果指定,则返回Ws
)。 取决于你使用的Excel版本至less有65,000行。 是的,这需要一些时间来循环。 因此,上面的覆盖范围限制了实际上在列1(列“A”)中具有值的那些行的循环。 你也可以像这样写这行, Rl = .Cells(.Rows.Count, "A").End(xlUp).Row
。
现在我认为你的代码是完美的。 它不是做什么的?