
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
テキストボックス内の文字のふ...
-
日付が1年以内になると他のセル...
-
エクセル 入力中に表示されな...
-
エクセル カタカナの文字を検...
-
数字がセルの左側に寄っていて...
-
【Excel】貼り付けた画像がいつ...
-
エクセルで同じ値が連続してい...
-
エクセルで入力欄を明確にしたい
-
Excel で金額の,で中央揃えす...
-
Excel 記入欄に網掛けして、文...
-
エクセルでふりがなごとリンク...
-
excel 表計算 加算するセルが空...
-
エクセルで書式設定だけを固定...
-
Excel2013でセルの書式が勝手に...
-
エクセルのふりがな機能を未設...
-
EXCELでCTRL+1が使えません。
-
エクセル 入力規則 貼付して...
-
エクセルで条件付き書式を使わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
テキストボックス内の文字のふ...
-
日付が1年以内になると他のセル...
-
数字がセルの左側に寄っていて...
-
エクセル 入力中に表示されな...
-
エクセル カタカナの文字を検...
-
エクセルで同じ値が連続してい...
-
エクセルで条件付き書式を使わ...
-
【Excel】貼り付けた画像がいつ...
-
excel 表計算 加算するセルが空...
-
Excelについて▶あるセルに文字...
-
エクセルで入力数字に自動的に,...
-
エクセル:セルのバックの色だ...
-
excelの16進数表示方法
-
Excel で金額の,で中央揃えす...
-
Excel 記入欄に網掛けして、文...
-
エクセルで入力欄を明確にしたい
-
EXCELでCTRL+1が使えません。
-
Excel2013でセルの書式が勝手に...
おすすめ情報
VBAは使っても構いません。よろしくお願いします。