ギリギリ行けるお一人様のライン

excelでセルの保護をしたあとに、保護したところ以外のセルで塗りつぶしの機能を使いたいのですが、どうやら出来ないようです。何か良い方法はないでしょうか?

A 回答 (7件)

>マクロを有効にする方法を教えて下さい。



補足のメッセージからすると、Excel2000でしょうか。今、Excel2000がないので100%確かではないですが、

 ツール→マクロ→セキュリティ→セキュリティレベル

のセキュリティレベルが『高』になっていませんか?


『中』にすればブックを開くと確認のダイアログボックスがでるので『はい(?もしかしたらYes)』でマクロを有効にします。

『低』にすれば無条件にマクロが有効になると思いますが、マクロウイルスが流行っていますし余りおすすめできません。

うまくいけばいいですが・・・では。
    • good
    • 0
この回答へのお礼

今までどうもありがとうございました。
VBのプログラムまで作っていただいてしまって本当に助かりました&勉強になりました。

お礼日時:2002/01/23 11:15

>例えば一色しか指定出来ないようにする方法はないでしょうか



'==================================最初の回答をアレンジ===
'シートの保護、非保護にかかわらず塗りつぶし可能にする
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を閉じて再度このマクロ機能を使おうとすると次のエラーが出てしまいます。
”このプロジェクトのマクロは無効に設定されています。”というウィンドウが表示されてしまうのですが、マクロを有効にする方法を教えて下さい。
よろしくお願いいたします。

補足日時:2002/01/22 14:07
    • good
    • 0
この回答へのお礼

先日マクロのプログラムを作成していただきましたが、ユーザ設定のボタンを作った際にこのボタンが全てのファイルで有効になってしまうため、このファイルの場合だけ表示させるようにしたいのですが、どのようにしたらよいのでしょうか。

お礼日時:2002/02/08 15:43

シートの保護・非保護に関係なく色を塗るマクロ例です。

パスワードは考慮していません。やっていることは単純ですのでコメントを見てもらえばと思います。


ツール→マクロ→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のことが全く分からないので教えていただきたいのですが、例えば一色しか指定出来ないようにする方法はないでしょうか。
また、ショートカットキーを割り当てておくと便利と言うことですが、ツールバーにあるボタンの様なものを作ることは出来ないでしょうか?

補足日時:2002/01/21 09:59
    • good
    • 0

そうですね。


私も今試してみたんですが、塗りつぶし機能は出来ませんでした。
もし加工したいなら、やはりNo.1の方の言うとおり、解除して加工してから再び保護設定するか、VBA設定するしかなさそうです。

#「オブジェクトの保護」を外せば出来たような記憶があったので、大変失礼しました(-_-;)
    • good
    • 0

再びです。


一つ付け加えますが、「シートの保護」設定をする前に、加工したいセルの”ロック”を外してから保護設定するようにしましょう。
でないとセルじたい触れないですよ。

#当たり前ですが(^^;)

この回答への補足

もちろんNo.2,3に書いてある方法でシートの保護をしました。
その後保護をしていないセルを塗りつぶそうとすると、ツールバーに塗りつぶしのボタンは表示されているのですが、色の種類がグレーになっていて選択できない状態になっています。ということは出来ないということなのでしょうか?

補足日時:2002/01/17 11:57
    • good
    • 0

基本的なことを言うようですが、「シートの保護」設定は、「セルの書式設定」→「保護」タブの”ロック”にチェックされていてはじめて機能します。


ですから、シート保護を設定した後、一部のセルを加工したいのなら、そのセルの”ロック”を外せばいいんです。
試してみて下さい。
    • good
    • 0

保護を解除してからもう一度保護するしか無いのではないでしょうか。

    • good
    • 0

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


おすすめ情報