- ベストアンサー
excelのセルの保護をした後で・・・
excelでセルの保護をしたあとに、保護したところ以外のセルで塗りつぶしの機能を使いたいのですが、どうやら出来ないようです。何か良い方法はないでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>マクロを有効にする方法を教えて下さい。 補足のメッセージからすると、Excel2000でしょうか。今、Excel2000がないので100%確かではないですが、 ツール→マクロ→セキュリティ→セキュリティレベル のセキュリティレベルが『高』になっていませんか? 『中』にすればブックを開くと確認のダイアログボックスがでるので『はい(?もしかしたらYes)』でマクロを有効にします。 『低』にすれば無条件にマクロが有効になると思いますが、マクロウイルスが流行っていますし余りおすすめできません。 うまくいけばいいですが・・・では。
その他の回答 (6)
- nishi6
- ベストアンサー率67% (869/1280)
>例えば一色しか指定出来ないようにする方法はないでしょうか '==================================最初の回答をアレンジ=== 'シートの保護、非保護にかかわらず塗りつぶし可能にする 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)作ったツールバーを既存のツールバーが並んだ箇所の空いた所にドラッグ&ドロップ。 この作ったツールバーを表示したくない時は、表示→ツールバーでチェックをはずします。
お礼
先日マクロのプログラムを作成していただきましたが、ユーザ設定のボタンを作った際にこのボタンが全てのファイルで有効になってしまうため、このファイルの場合だけ表示させるようにしたいのですが、どのようにしたらよいのでしょうか。
補足
たびたびすみません。 上記の別法をコピーして使うことは出来たのですが、excelを閉じて再度このマクロ機能を使おうとすると次のエラーが出てしまいます。 ”このプロジェクトのマクロは無効に設定されています。”というウィンドウが表示されてしまうのですが、マクロを有効にする方法を教えて下さい。 よろしくお願いいたします。
- nishi6
- ベストアンサー率67% (869/1280)
シートの保護・非保護に関係なく色を塗るマクロ例です。パスワードは考慮していません。やっていることは単純ですのでコメントを見てもらえばと思います。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロを貼り付けます。 頻繁に使う場合は、ツール→マクロ→マクロ でこのマクロを選択し、オプシュンからショートカットキーを割り当てておくと便利かと思います。 ↓ここから Public Sub PatternSet() With ActiveSheet If .ProtectContents Then '/// シートが保護されている場合 /// '保護を解除 .Unprotect 'パターンを設定するダイアログボックスを表示する Application.Dialogs(xlDialogPatterns).Show '再度保護する .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Else '/// シートが保護されていない場合 /// Application.Dialogs(xlDialogPatterns).Show End If End With End Sub
補足
どうもありがとうございました。とっても助かりました。 VBのことが全く分からないので教えていただきたいのですが、例えば一色しか指定出来ないようにする方法はないでしょうか。 また、ショートカットキーを割り当てておくと便利と言うことですが、ツールバーにあるボタンの様なものを作ることは出来ないでしょうか?
- sydneyh
- ベストアンサー率34% (664/1947)
そうですね。 私も今試してみたんですが、塗りつぶし機能は出来ませんでした。 もし加工したいなら、やはりNo.1の方の言うとおり、解除して加工してから再び保護設定するか、VBA設定するしかなさそうです。 #「オブジェクトの保護」を外せば出来たような記憶があったので、大変失礼しました(-_-;)
- sydneyh
- ベストアンサー率34% (664/1947)
再びです。 一つ付け加えますが、「シートの保護」設定をする前に、加工したいセルの”ロック”を外してから保護設定するようにしましょう。 でないとセルじたい触れないですよ。 #当たり前ですが(^^;)
補足
もちろんNo.2,3に書いてある方法でシートの保護をしました。 その後保護をしていないセルを塗りつぶそうとすると、ツールバーに塗りつぶしのボタンは表示されているのですが、色の種類がグレーになっていて選択できない状態になっています。ということは出来ないということなのでしょうか?
- sydneyh
- ベストアンサー率34% (664/1947)
基本的なことを言うようですが、「シートの保護」設定は、「セルの書式設定」→「保護」タブの”ロック”にチェックされていてはじめて機能します。 ですから、シート保護を設定した後、一部のセルを加工したいのなら、そのセルの”ロック”を外せばいいんです。 試してみて下さい。
- taranko
- ベストアンサー率21% (516/2403)
保護を解除してからもう一度保護するしか無いのではないでしょうか。
お礼
今までどうもありがとうございました。 VBのプログラムまで作っていただいてしまって本当に助かりました&勉強になりました。