
Excelにおいて特定のセルだけを、書式変更(セルの塗りつぶし)ができるようにしたいと考えています。変更OKのセルを「セルの書式設定」からロック解除して、シートの保護をかけたのですが、
・シートの保護時に「セルの書式設定」にチェックを入れる⇒ロックされたセルも塗りつぶせる
・シートの保護時に「セルの書式設定」のチェックを外す ⇒ロックされてないセルも塗りつぶせない
という結果になり、やりたい事が実現できません。
ロックされていないセルはコピーしたいので、「ロックされたセル範囲の選択」のチェックは外さない方法で上記を実現できないでしょうか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
補足どうもです。
本当は設定があればいいのでしょうが、よくわかりませんでした。
VBAの場合、
'*---------------------処理をしたいシート
'シート保護で[セルの書式設定]にチェックが入っているのが前提です。
'右クリックした時
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'右クリックで表示されるコマンドバーを初期化する
Application.CommandBars("Cell").Reset
If (ProtectContents = True) Then 'シート保護されている場合
If (Target.Locked = False) Then '選択範囲の全てがロックされていない場合
Else '選択範囲の全てがロックされていない場合以外(True or Null)
'セルの書式設定を使用不可にする
Application.CommandBars("Cell").Controls("セルの書式設定(&F)...").Enabled = False
End If
End If
End Sub
'シートがアクティブでなくなった場合
Private Sub Worksheet_Deactivate()
Application.CommandBars("Cell").Reset
End Sub
'*---------------------ThisWorkbook
'ブックがアクティブでなくなった場合(Closeの場合も含む)
Private Sub Workbook_Deactivate()
Application.CommandBars("Cell").Reset
End Sub
でどうでしょうか?
うまくいかなかったらごめんなさい。
ただ、書式設定でセルの色を変えた場合、
場合によっては、ロックしてあるセルとロックしてないセルの見分けがつかなくなり面倒くさいので
私は、セルの色を変えられたくないですけどね。
バグがあって書式設定が使えなくなってしまった場合は
Application.CommandBars("Cell").Reset
で元に戻ると思います。
No.3
- 回答日時:
こんばんは。
開発-コントロール-挿入-フォームコントロールの中の「チェックボックス」をワークシートの任意の場所において、貼り付けます。
次に、右クリック-コントロールの書式設定-保護タブ-ロックを外す
再び、右クリック-マクロの登録で、「新規」をクリック
そうすると、
「Sub チェック1_Click() ~End Sub」が出来ているはずです。
'----------------------------
'//新規の標準モジュールへ
Option Explicit
Const MYPSW = "00" 'パスワード、プロシージャ外に登録 任意、複雑なものにはしない
Sub チェック1_Click()
Dim ret As Variant
Worksheets("Sheet1").Unprotect Password:=MYPSW
With ActiveSheet.Shapes(Application.Caller)
ret = .DrawingObject.Value
End With
If ret = xlOn Then 'チェックがON の場合
Worksheets("Sheet1").Protect Password:=MYPSW, AllowFormattingCells:=True
Else 'オフの場合
Worksheets("Sheet1").Protect Password:=MYPSW, AllowFormattingCells:=False
End If
End Sub
Sub Aut_Open() '最初だけ、これを実行してください。後は、起動時に自動せってされます。
Worksheets("Sheet1").Unprotect Password:=MYPSW
Worksheets("Sheet1").Protect Password:=MYPSW, UserInterfaceOnly:=True
End Sub
'//
'----------------------------
注意:シート1を想定しているので、Worksheets("Sheet1")としています。
1回めは、Auto_Open のところにカーソルを置いて、実行してみてください。
保存は、xlsm のマクロ付きファイルか、xlsb のバイナリファイルです。
後は、起動時にAuto_Openが設定されます。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) Excel 数式を使用した条件付き書式が、一つのセルにしか反映されない 3 2022/06/08 23:20
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) Excelマクロ(VBA)CELL形式とA1形式の使い分け 6 2022/08/27 23:35
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) EXCELの書式設定を固定することはできませんか? 5 2023/06/20 17:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelの関数について、特定の文...
-
日付が1年以内になると他のセル...
-
エクセル カタカナの文字を検...
-
エクセル「一度設定した列幅を...
-
Excelについて▶あるセルに文字...
-
数字がセルの左側に寄っていて...
-
【Excel】貼り付けた画像がいつ...
-
コピペするとセルの表示形式が...
-
エクセルで同じ値が連続してい...
-
エクセル 入力中に表示されな...
-
【Excel】1-4と入力すると1月4...
-
excelの16進数表示方法
-
エクセルで条件付き書式を使わ...
-
excel 表計算 加算するセルが空...
-
エクセル:セルのバックの色だ...
-
エクセルで縦書きのかっこ
-
条件付き書式で範囲外だったら...
-
【!】Excel 2つの条件付き書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
テキストボックス内の文字のふ...
-
日付が1年以内になると他のセル...
-
エクセル 入力中に表示されな...
-
数字がセルの左側に寄っていて...
-
エクセルで同じ値が連続してい...
-
【Excel】貼り付けた画像がいつ...
-
エクセル カタカナの文字を検...
-
excel 表計算 加算するセルが空...
-
excelの16進数表示方法
-
Excelについて▶あるセルに文字...
-
エクセルで条件付き書式を使わ...
-
エクセル:セルのバックの色だ...
-
エクセルで入力数字に自動的に,...
-
Excel で金額の,で中央揃えす...
-
エクセル 入力規則 貼付して...
-
条件付き書式で範囲外だったら...
-
エクセル「一度設定した列幅を...
-
Excel 記入欄に網掛けして、文...
おすすめ情報
VBAは使っても構いません。よろしくお願いします。