ワークシートイベントで数式、指定文字列の保護(セル結合がある場合)の実験 Excel2000 VBA [Excel2000 VBA独習]
ワークシートイベントで数式、指定文字列の保護(セル結合がある場合)の実験
エクセルで無料テンプレートの請求書をDLして、利用するに当たって変更されては困る文字列と数式を保護する事にした。
ここで問題が発生、ワークシートイベントで数式のあるセルを選択したら右のセルを選択するようにして、数式を保護してみたが結合セルでは巧くいかなっかたので、一工夫した。
選択セルに数式があれば右のセルを選択(シートのコードに記述)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select
End Sub
上記のコードでは結合セルに数式があると右に移動しない。そこで下記のようにしてみた。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.HasFormula = False And Selection.MergeCells Then Exit Sub
If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select: Exit Sub
If Target.MergeCells Then ActiveCell.Offset(0, 1).Select
End Sub
結合セルに数式が有る場合は
If Target.MergeCells Then ActiveCell.Offset(0, 1).Select を実行する。
つまり、結合セルだから移動
次に結合セルだが、数式が無しで記入したい場合も移動してしまうのでNG。
そこで、一行目に
If Target.HasFormula = False And Selection.MergeCells Then Exit Sub を記述して回避する。
保護したい文字列はどうすかは、数式化して選択したら右に移動するようにする。
If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select: Exit Sub
例 請求書 を記述されているセルは =("請求書")とし数式化する。
動画
http://www14.atpages.jp/nokie/telstar/swf/excel2.swf.html
コメント 0