SSブログ

ワークシートイベントで数式、指定文字列の保護(セル結合がある場合)の実験 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
excelVBA_sheetivent.jpg

上記のコードでは結合セルに数式があると右に移動しない。そこで下記のようにしてみた。
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
例 請求書 を記述されているセルは =("請求書")とし数式化する。

excelVBA_seikyusyo.jpg

excelVBA_seikyusyo2.jpg

動画
http://www14.atpages.jp/nokie/telstar/swf/excel2.swf.html


タグ:Excel2000 VBA
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。