Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Excel 2013)
フォームコントロールボタンを使用してパスワード付きシート保護をするには
投稿日時: 18/07/09 20:06:39
投稿者: toku-toku

Excelの操作に不慣れなユーザー向けに、ワークシート上のフォームボタンをクリックするとパスワードを設定しシート保護ができるようにしたいです。
同様に、保護解除用のフォームボタンも設定したいのですが、うまくいきません。
 
当方VBA初心者のため、マクロの記録をし、コードを多少操作する程度です。
マクロの記録
⇒校閲>シートの保護
⇒パスワード設定
⇒保護
記録終了
としても、パスワードなしで解除できてしまいます。
上記マクロのコードは以下の通りです。
 
Sub ボタン2_Click()
'
' ボタン2_Click Macro
'
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowDeletingRows:=True
End Sub
 
パスワードに関する記述がなかったので、2行目に
  ActiveSheet.Protect Password:="1234"
を追加しましたが、うまくいきません。
 
どなたかご教授ください。
 
 

回答
投稿日時: 18/07/09 21:53:42
投稿者: simple

こんばんは。
Protectのところにカーソルを持って行ってF1キーを押せばヘルプが表示されます。
それに則って、Password引数を追加して実行すればよいと思います。

投稿日時: 18/07/10 12:00:06
投稿者: toku-toku

simple様
 
ありがとうございます。
おかげさまで、パスワード『1234』での設定はうまくいきました。
 
フォームボタンをクリックした時に、任意のパスワードを設定する方法が、全く検討もつきません。
マクロを記録しても、コードが記録されていないようです。
 
Password:="1234" の "1234"に変数を入れるのでしょうか?
定義の仕方等が全く分からずお手上げ状態です。

回答
投稿日時: 18/07/11 06:05:24
投稿者: simple

>マクロを記録しても、コードが記録されていないようです。
パスワードが記録されてしまったら秘匿する目的が果たせないからでは?
 
>Password:="1234" の "1234"に変数を入れるのでしょうか?
>定義の仕方等が全く分からずお手上げ状態です。
マクロ側で決め打ちするなら、それでよいと思いますが、
マクロを見てパスワードが判明するなら、そもそもの意味を成さないかもしれない。
 
> 任意のパスワードを設定する方法が、全く検討もつきません。
見当だと思いますが、
それは、Excelに予め備えられてある「シートの保護」が、
まさにパスワードを任意設定する方法ではないんですか?
わざわざフォームコントロールを使って、
パスワード入力ボックスを新規に作らなくてもよいのでは?車輪の再発明?
 
そもそも
・そのファイルは複数人が使うのですか?
・パスワード付きで保護する理由はなんでしょうか。
・単に既存の情報を変更してしまうミスを予防し、
  書込可能なセルを限定したい、ということなら、
  パスワードを指定しなくても普通に保護すればよいのでは?
・予め保護したシートを提供すれば済むことでは?
・保護箇所の選択などもユーザーに委ねるなら、
  既定の手段をそのまま使ってもらうことでよいのでは?
 
必要なら操作内容を説明したものをシートに書き付けるなどの工夫をして、
ユーザーが学習する機会を提供するほうが長い目でみれば有益だと思います。
>Excelの操作に不慣れなユーザー向けに
慣れていってもらうことも必要でしょう。
いかがでしょうか。
# 誤字等がありましたので一部修正。

トピックに返信