• ベストアンサー

Excelシート上でボタン1つで交互に保護と解除を設定

VBA勉強中の初心者です。よろしくお願いします。 (Excel2000使用) シートの保護と解除をボタン1つで押すたびに交互に出来るようにしたいです。 今は、保護と解除の2つのボタンを作り、VBAを登録して使っているのですが、場所の都合でそれを1つのボタンでON/OFFみたいな感じで出来ればと思います。 なにぶんにも初心者で、VBAも自動記録に毛の生えた程度の知識しかありません。 トグルボタンの存在は知っていますが、構文の作り方がまるで判りません。 お知恵下さい。よろしくお願いします。

  • fuji39
  • お礼率96% (138/143)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

fuji39さん、Wendy02です。 >下から2行目の"CommandButton1"を"ToggleButton1"に変えたら動いたのですが、これでよろしかったでしょうか? すみません。おっしゃるとおりです。元は、CommandButton1 から作ったので、自分の方は直したのに、アップロード・ログは直しませんでした。 色は、このようにしてつけます。思っている色と、若干違うのは、トグルボタンのせいだと思います。色をつけるなら、CommandButton でもよいかもしれませんね。 Private Sub ToggleButton1_Click()  If ProtectContents Then    ActiveSheet.Unprotect  Else    ActiveSheet.Protect , UserInterfaceOnly:=True  End If  With ToggleButton1  If ProtectContents Then    .Caption = "Lock"    .BackColor = vbRed 'ロック  Else    .Caption = "UnLock"    .BackColor = vbBlue 'アンロック  End If  End With End Sub もしも、自分の思った色が違うなって思ったら、プロパティのBackColor から色を選んで、そこに出てきた16進の数字を、コピーして、コード上に貼り付けてください。vbRed, vbBlue は、組み込み定数です。 例: 青  .BackColor = &HFF&

fuji39
質問者

お礼

再度のご返事ありがとうございます。 おかげさまで、思うように仕上る事が出来ました。 お礼が遅くなり、申し訳ありませんでした。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 通常、トグルボタンもコマンドボタンも同じです。 なお、ActiveSheetは、本来は、シート名を入れたほうがよいです。 Private Sub ToggleButton1_Click()  If ProtectContents Then    ActiveSheet.Unprotect  Else    ActiveSheet.Protect  End If  CommandButton1.Caption = Choose(CInt(ProtectContents) + 2, "Lock", "UnLock") End Sub

fuji39
質問者

お礼

ありがとうございます。 最初は動きませんでしたが、下から2行目の"CommandButton1"を"ToggleButton1"に変えたら動いたのですが、これでよろしかったでしょうか? 感謝致します。

fuji39
質問者

補足

頼みついでに申し訳ありませんが、追加でご質問させて下さい。 ボタン上の文字を"Lock"の時は赤色、"Unlock"の時は青色にしたいのですけれど、どうしたらよろしいでしょうか? 何卒ご教示下さい。 よろしくお願いします。

noname#181803
noname#181803
回答No.1

こんなのはいかがでしょうか? マクロで適当に記述しただけですが・・・。 Private Sub CommandButton1_Click() If Worksheets("Sheet1").ProtectContents = False Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True,Scenarios:=True Else ActiveSheet.Unprotect End If End Sub

fuji39
質問者

お礼

ありがとうございます。 大変参考になりました。 早速使います。

関連するQ&A

  • Excel2000VBAで保護設定を自動化したのですが..

    Excel2000使用です。 VBAは初心者で、自動記録に毛がはえたような知識しかありませんが、よろしくお願いします。 シートの保護及び解除をVBAで自動化したのですが、自動記録だとパスワードの設定が出来ません。 構文のなかにこのパスワードを記録させるにはどのようにしたらよろしいのでしょうか? ご教示下さい。

  • Excel VBAからトグルボタンを押下状態にしたい

    タイトルの通りなのですが、 シートにトグルボタンを設置し、それを押すのではなく VBAから押下状態にするにはどうしたら良いのでしょうか。 具体的にどう使いたいかと言いますと、 「このシートは保護されているよ」という状態を 簡単に目視できるようにしたいために、 押すとシート保護、もう一度押すと解除というトグルボタンを つけたものの、 ツールバーからシート保護をしたら、「トグルボタンは押されてないけど シートは保護はされているという気持ち悪い状態になるのを 何とかできないかな・・・と。 ご存知の方いらしたらお願いいたします。

  • エクセルのシートの保護と解除

    excel2010です。 1月から12月までシートを作り、年間合計を出していますが、各シートに保護をかけています。ただ、それを解除し、編集するとき、各シートごとに解除をし、その後、再び、各シートごとに保護をかけなおしています。13枚いちいち解除、保護をかけなおすのは大変なので、同時に全部のシートの解除、保護をしたいのですが方法を教えてください。 また、現在、シートが出る下の行がコマンドになっていて、各シートが出てきません。どうすればシート1、シート2などが出てくるようになるのでしょうか? よろしくお願いいたします。

  • エクセルのシート保護をマクロのボタンで

    ご教示下さい。 エクセルでのシート保護の設定をボタン一つで出来るようにと思い、マクロの自動記録で作成してみましたが、設定したはずのパスワードが記録されていません。 シート保護の解除にパスワードの入力が必要なようにする、シート保護のマクロは出来るでしょうか?。 どなたか、よろしくお願いいたします。

  • Excel2013でシートの保護解除について

    よろしくご教授お願いいたします。 Excel2002のブックを互換モードでExcel2013に移行しました。 移行前には、特定範囲のセルの保護ロックを解除の上、シートに保護をかけていました。 移行後、しばらく使っているうちにロック解除しているセルに入力すると、「シートに保護がかかっているので解除してください」とのダイアログが現れます。[校閲]タグを開いても[シートの保護解除]ボタンはなくて、[シートの保護]ボタンが選択できない淡色で存在しています。 [校閲]タブを色々操作しているうちに、「共有」に変更と加えたらしく、ひとつのシートに数値入力すると、全てのシートの同じ座標に同一の数値が入力されてしまいます。 毎日入力する必要があるデータなので大変困っています。 解決策が分かればお教えいただけないでしょうか。

  • VBAでのブック・シートの保護・解除について

    エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、 質問させて頂きます。 消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。 VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。 ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。 そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。 イメージとしては下記のような流れになります。 対象ブック:ブックA 対象シート:シート1 パスワード:1234(それぞれ) 常時保護を解除しておきたいセル:range("A6:H106") 1.(オープン時には、)ブック保護&特定のセル以外のシート保護 2.VBA実行時には全ての保護解除 3.VBA終了時に、1の状態に戻る どうぞよろしくお願い致します。

  • シートの保護について

    Excel2000のVBAについて質問です。 シートの保護をした状態で、可視セルを範囲指定しよう思い下記コードを 実行すると、シートの保護の解除を求められます。 Range("A1:A65536").SpecialCells(xlCellTypeVisible).Select シートの保護をしたまま、可視セルを指定することはできないのでしょう か?

  • Excelのシートを保護してオプションボタンの選択のみ可能にしたい

    Windows2000、Excel2002使用です。 オプションボタンを使用し、Excelでアンケートを作成しました。 (メニュー>ツールバー>コントロールツールボックスを呼び出して、オプションボタンを作成しています。) シートを保護して、オプションボタンの選択と一部のセルへの記入のみできるようにしたいです。 ・編集したいセルのロックを解除 ・オプションボタンを選択し、右クリック>コントロールの書式設定>ロックを解除 ・オプションボタンが置いてあるセルのロックを解除 をおこない、「ロックされていないセルの選択」のみ許可してシートに保護をかけました。 セルに記入はできるのですが、オプションボタンの選択をしようとするとエラーメッセージが出てしまいます。 調べても出てこないので教えてください。お願いします。

  • シート保護の解除方法

    シート保護の解除方法 EXCEL2007を使っています。 自分で作ったワークシートに保護の設定をしました。 セルを一部修正するため、保護を解除したいのですが、 校閲タブの中の「シート保護の解除」ボタンが灰色になっていて、 クリックできません。 パスワードを設定していないことは間違いありません。 シート保護を解除する方法をお教えください。

  • Excelで複数シートの保護を一気に解除する方法はありませんか?

    WinXPでExcel97を使っています。 複数シートの保護を一気に設定/解除することはできますか? ブック内のすべてのシートを対象にして、保護をかけたり解除したりしたいと思います。シート数が10以上になるので、一つ一つやるのは手間なのです。 いい方法があればよろしくお願いいたします。

専門家に質問してみよう