SQLの窓

2017年08月01日


VBA : シートの保護と部分的なセル入力の許可

現実問題として、Excel で運用を目的とした定型フォーマットのワークシートを用意しても、使用者が勝手にフォーマットを変えて混乱するという事は普通に起きます。その際、『シートの保護』を利用すると、パスワード無しではなにもできない状態にする事が可能です。

ただ、その際にも定型フォーマットの目的である機能は果たさなければならないので、部分的に入力可能にする必要があります。



その為には入力対象のセルに対してロックのチェックを外すという操作が手作業の場合は必要ですが、VBA で実行すると以下のようになります
    ' ********************
    ' データ処理をする Sheet
    ' ********************
    Dim objSheet As Worksheet

    On Error Resume Next
    Set objSheet = Worksheets("処理したいシート名")
    On Error GoTo 0


    ' ロック解除
    For I = 1 To 31 * 2 Step 2
    
        ' ロック解除(9行目のC列から開始して2行毎に1ヶ月ぶん)
        objSheet.Cells(I + 8, 3).Locked = False
    
    Next


また、VBA でワークシート内を変更する場合は、やはり保護されているとエラーとなるので処理の前で保護を解除し、処理の後で再度保護します。
    ' 保護を一旦解除
    objSheet.Unprotect "パスワード"
    
    ' 入力リストの解除とロック化
    For I = 1 To 31 * 2 Step 2
    
        objSheet.Cells(I + 8, 3).Validation.Delete
        Call objSheet.Cells(I + 8, 3).Validation.Add(xlValidateInputOnly, xlValidAlertStop, xlBetween)
        ' ロック
        objSheet.Cells(I + 8, 3).Locked = True
        
        ' クリア
        If objSheet.Cells(I + 8, 1).Value <> "" Then
            objSheet.Cells(I + 8 + 1, 4).Value = ""
            objSheet.Cells(I + 8 + 1, 8).Value = ""
        End If
    
    Next
    
    ' シート保護
    objSheet.Protect "パスワード"


このように、セル単位の設計をしておけば VBA で保護フォーマットを作成する事はとても容易に可能です。





タグ:VBA EXCEL VB
posted by lightbox at 2017-08-01 19:39 | Comment(0) | VBA | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり