まりふのひと

マクロ家計簿77/[シートの保護]の不具合に対応するため、LAVIE公式サイトの手順でマクロを作り直した

 昨日、6日のWindows10データ移行の続きを高齢者いきいき館で行ったが、

  1. マクロ家計簿77をバージョン1.41aに上げ、
  2. [シートの保護]を行った‥‥ が、上手く動作しなかった。
    • 2行目のカーソルの動きがおかしい?



 [翌年分ブック作成]で「2019年の家計簿」を作り、シート保護のマクロを作った時の方法で行った‥‥ が、やはり上手く動作しなかった。

  • Windows10 Home、バージョン:1709、OSビルド:16299.192
  • Excel2013 (15.0.4981.1000) MSO (15.0.4981.1000) 32ビット
    • 何気なく[今すぐ更新]した‥‥ ら、15.0.4997.1000 になった。これにもビックリ!!!


 改めて、“Excel2013 シートの保護” でググり、Excel2013での方法を確認した。

  • Excel 2013で一部のセルを変更できないようにする方法NEC LAVIE公式サイト 更新日:2016/07/14)

    操作手順

    1. 編集を許可するセルをドラッグまたはクリックして選択します。
    2. 選択したセルを右クリックして、表示された一覧から「セルの書式設定」をクリックします。
    3. 「セルの書式設定」が表示されます。
       「保護」タブをクリックし、「ロック」のチェックを外して「OK」をクリックします。
    4. 続いてシートを保護します。
       リボンから「校閲」タブをクリックし、「変更」グループの「シートの保護」をクリックします。
    5. 「シートの保護」が表示されます。
       「シートとロックされたセルの内容を保護する」にチェックが入っていることを確認して、「OK」をクリックします。

    補足

     シートの保護を解除する場合は、リボンから「校閲」タブをクリックし、「変更」グループの「シート保護の解除」をクリックします。


 マクロの記録からVBAコードを取得し、下記とした。
バージョンを 1.41b とし、テストにはならないと思うが自分の家計簿で試行中‥‥

01.Function シートの保護(arg保護 As Boolean) As Boolean
02.Dim lastCol As Long, lastRow As Long
03.  
04.  If arg保護 = False Then
05.    ActiveSheet.Unprotect
06.  Else
07.      'Enter押下で右に移動する…ver.1.41a
08.    Application.MoveAfterReturn = True
09.    Application.MoveAfterReturnDirection = xlToRight
10.      '入力列の範囲を選択し、
11.    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
12.    Range(Columns(1), Columns(lastCol)).Select
13.      'セルのロックを解除する。
14.    Selection.Locked = False
15.    Selection.FormulaHidden = False
16.      'セルを保護する。
17.    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
18.      , AllowFormattingCells:=True, AllowFormattingColumns:=True
19.    
20.    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
21.    Cells(lastRow + 1, 1).Select
22.  End If
23.  
24.End Function