次の問題があります。
Excel スプレッドシートで特定の範囲 (B20:Y20) の行をロックし、ロックされた行を特定の色でペイントするマクロを作成しました。さらに、ロックされた行のタイムスタンプを Y20 に作成します。セル ロックの条件は、列 B20 の値が空でないことです。
マクロをアクティブにすると、まずセル B20 の値が 0 より大きいかどうかを確認する必要があります。この場合、指定した範囲の行がロックされ、色が付けられ、タイムスタンプが追加されます。
ここでの目標は、B21 の値が >0 の場合、次の行 (範囲 B21:Y21) に対して同じ手順を実行することです。これは私の問題につながります: 連続する行でマクロを実行するにはどうすれば「ロールフォワード」できますか?
私の観点からは、コードのすべてのランクを調整して、列と行が「動的」になり、現在表示されている特定の1行だけを「厳密に」実行できないようにすることが目標です。
マクロをアクティブにすることで、列 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