>例えば一色しか指定出来ないようにする方法はないでしょうか
'==================================最初の回答をアレンジ===
'シートの保護、非保護にかかわらず塗りつぶし可能にする
Public Sub PatternSet()
With ActiveSheet
If .ProtectContents Then
.Unprotect
PatternSetSub 'パターン色を指定する
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
PatternSetSub 'パターン色を指定する
End If
End With
End Sub
'パターン色を指定する(Sub)<赤=3のみ使える例>
'ColorIndexの意味はVBE画面のHELPで、ColorIndex→ColorIndexプロパティで分かるでしょう
Public Sub PatternSetSub()
Dim curPattern As Integer '現在のパターン色
With ActiveCell.Interior
curPattern = .ColorIndex '現在の色を待避
Application.Dialogs(xlDialogPatterns).Show '色を指定する
'指定色か色なし以外は再度入力する。
While Not (.ColorIndex = 3 Or .ColorIndex = xlNone)
MsgBox "赤しか使えません。", vbOKOnly + vbExclamation, "禁止の色"
.ColorIndex = curPattern '元の色に戻す
Application.Dialogs(xlDialogPatterns).Show '再度設定する
Wend
End With
End Sub
'==================================================別法===
'1色しか使えないならダイアログを出す必要はないかも
'下記は、赤色を塗るマクロと色を消すマクロ。セットで使います。
Public Sub 色を塗る()
With ActiveSheet
If .ProtectContents Then
.Unprotect
Selection.Interior.ColorIndex = 3
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
ActiveCell.Interior.ColorIndex = 3
End If
End With
End Sub
Public Sub 色を消す()
With ActiveSheet
If .ProtectContents Then
.Unprotect
Selection.Interior.ColorIndex = xlNone
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
ActiveCell.Interior.ColorIndex = xlNone
End If
End With
End Sub
>ツールバーにあるボタンの様なものを作ることは出来ないでしょうか
まず、新しいツールバーを作成します。
(1)表示→ツールバー→ユーザー設定。
(2)→新規作成ボタンを押して自分で名前を入力します。
これで小さなツールバーができます。
(3)ユーザー設定ダイアログでコマンドタブをクリック。
(4)分類の枠内でマクロをクリック。
(5)コマンド欄の『ユーザー設定ボタン』をクリックして、(2)のツールバーにドラッグ&ドロップ。
(6)ドロップしたアイコンを右クリックしてマクロの登録を選択。
ボタンイメージの変更もできます。
(7)マクロを選択してok。ユーザー設定ダイアログを閉じます。
(8)作ったツールバーを既存のツールバーが並んだ箇所の空いた所にドラッグ&ドロップ。
この作ったツールバーを表示したくない時は、表示→ツールバーでチェックをはずします。
お礼
今までどうもありがとうございました。 VBのプログラムまで作っていただいてしまって本当に助かりました&勉強になりました。