将单个单元格范围更改为列范围

下面的代码工作,但现在我需要它的工作范围而不是只有一个单元格范围。 我需要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

现在我认为你的代码是完美的。 它不是做什么的?