|
>シートの保護有無確認をして保護が掛かっていれば、外して
という処理も含めるなら、変数の宣言に
Dim Flg As Boolean
を追加し
For Each SH In Worksheets
Flg = False
If SH.Name = "INDEX" Then GoTo NLine
If SH.ProtectContents Then
Flg = True: SH.Unprotect
End If
On Error Resume Next
If Intersect(SH.Cells.SpecialCells(-4144), SH.Range("H4")) Is _
Nothing Then GoTo NLine
SH.Range("H4").Comment.Text "コメント"
NLine:
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
If Flg Then SH.Protect
Next
と、します。
>ここで何故このコードが必要なのか
ループしている各シートの H4 セルが、確実にコメントをつけているかを確認
するためです。例えば「対象のセルに数式が含まれているか ?」という判定なら
HasFormulaプロパティの値を調べればよいのですが、HasCommentというプロパティ
はありませんから、SpecialCellsメソッドでコメントをつけたセルをピックアップし、
それと H4 が重なっているかを見て、コメントの有無を調べているわけです。
そうした判定によって「H4 には確実にコメントが設定されている」ということが
分かれば、単にその値を書き換えれば済む、というわけなのです。
|
|