アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelにおいて特定のセルだけを、書式変更(セルの塗りつぶし)ができるようにしたいと考えています。変更OKのセルを「セルの書式設定」からロック解除して、シートの保護をかけたのですが、

・シートの保護時に「セルの書式設定」にチェックを入れる⇒ロックされたセルも塗りつぶせる
・シートの保護時に「セルの書式設定」のチェックを外す ⇒ロックされてないセルも塗りつぶせない

という結果になり、やりたい事が実現できません。
ロックされていないセルはコピーしたいので、「ロックされたセル範囲の選択」のチェックは外さない方法で上記を実現できないでしょうか?


よろしくお願いいたします。

質問者からの補足コメント

  • VBAは使っても構いません。よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/26 06:59

A 回答 (3件)

補足どうもです。


本当は設定があればいいのでしょうが、よくわかりませんでした。

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
で元に戻ると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2018/06/01 16:15

こんばんは。



開発-コントロール-挿入-フォームコントロールの中の「チェックボックス」をワークシートの任意の場所において、貼り付けます。
次に、右クリック-コントロールの書式設定-保護タブ-ロックを外す

再び、右クリック-マクロの登録で、「新規」をクリック
そうすると、
「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が設定されます。
「Excel 特定のセルだけ書式変更を許可」の回答画像3
    • good
    • 0
この回答へのお礼

別の方の回答を元に対応しましたが、ご回答ありがとうございます!

お礼日時:2018/06/04 14:02

VBAは使ってもいいのですか?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!