我有以下问题:
我创建了一个宏,它在我的 excel 电子表格中锁定特定范围 (B20:Y20) 的行,并用特定颜色绘制锁定的行。此外,它为 Y20 中的锁定行创建时间戳。单元格锁定的条件是 B20 列的值不为空。
当我激活宏时,首先应检查单元格 B20 的值是否 > 0。如果是这种情况,则指定范围的行被锁定并着色并添加时间戳。
现在的目标是在 B21 的值大于 0 时对下一行(范围 B21:Y21)执行相同的过程。这导致了我的问题:如何“前滚”我的宏以在连续行中执行?
从我的角度来看,目标是调整我的代码的所有等级,使列和行变为“动态”,并且不能仅针对当前显示的一个特定行“严格”执行。
有谁知道如何通过激活宏来调整我的代码,以便将 B 列 > 0 的下一行用于处理?
提前致谢。
这是我的代码:
Sub Check()
If ActiveSheet.Range("B20") = "" Then
MsgBox "Please Check Input Data.", vbOKOnly, "Error"
Else
Call Savepostings
End If
End Sub
Sub protectrow()
Dim rng As Range
Set rng = Range("A20:Y20")
ActiveSheet.Unprotect Password:="A"
rng.Interior.Color = vbRed
rng.Locked = True
ActiveSheet.Protect Password:="A", DrawingObjects:=True, _
Contents:=True, Scenarios:=True, _
userinterfaceonly:=True
ActiveSheet.EnableAutoFilter = True
End Sub
Sub Savepostings()
If Cells(13, 2) = "ERROR" Then
MsgBox "Error", vbOKOnly, "Error"
Else
MsgBox "OK", vbOKOnly, "OK"
Call printtime
Call protectrow
End If
End Sub
Sub printtime()
Cells(20, 24) = printUserName
Cells(20, 25) = printTimeStamp
End Sub
Function printUserName() As String
printUserName = Application.UserName
End Function
Function printTimeStamp() As String
printTimeStamp = Now()
End Function