首页 > 解决方案 > 循环宏

问题描述

我有以下问题:

我创建了一个宏,它在我的 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

标签: excelvbabyval

解决方案


推荐阅读