• 締切済み

Excel(VBA)について教えてください。

VBAの初心者です。 宜しくお願いします ワークシートに貼り付けたトグルボタンを入力が出来ない状態にしたいのですが、よくわかりません。どなたか教えていただけないでしょうか? 私が理解している範囲は次の通りです。 1)LockedプロパティーをTrueにする。 2)コントロールの書式設定でロックする 3)ワークシートの保護をかける。 これで、トグルボタンの編集はロックできますが、入力自体がロック出来ません。 宜しくお願いいたします。

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#2です。 > Enabledを使うと表示が淡表示になるので少し希望と異なります。 見た目はそのままで、クリックしてもうんともすんとも言わない状態にしたいって事? ビジュアルに押せない状態が解る方が、使う側にとっては良いと思うんですが、、、 WindowsAPIでMouseDownへのMessageをフックして届かないようにする等すれば出来るかも知れませんが、良く解りません。 #3の方のアイデアならそれより簡単に出来そうですね。 単に押し込んだ状態にしたくないだけならば、下記のようにするとCommandButton と同じような動作になります。 Private Sub ToggleButton1_Click()   ToggleButton1.Value = False End Sub

wan_wan
質問者

お礼

皆さん!ホント、ありがとうございました。 1週間待ってみて、出来ないことが判りました。 別の方法を考えようかと思います。また、疑問が出たときには助けてください。 宜しくお願いいたします。 なお、 Private Sub ToggleButton1_Click()   ToggleButton1.Value = False End Sub だと、Valueを変更したときにClickのイベントが発生して無限ループになります。(僕の場合222回のループしてました。) Clickって名前だから、マウスの割り込みかと思っていたら、違うんですね? ありがとうございました。

  • keikan
  • ベストアンサー率42% (75/176)
回答No.3

ちょと強引かもしれませんが、そのトグルボタンと同じ形状の同じ状態(見た目)のイメージを用意してください。 そのイメージをそのトグルの上にぴったりと重ねて配置します。 で、必要に応じて、トグルのVisibl(可視)で表示非表示してやってください。 イメージがうまくできていれば視覚的にトグルを押せない効果が生まれると思います。 また不可視にしていることでトグルをクリックできなくなりますのでコントロールも可能です。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

Enabled を False にすると希望の動作になる?

wan_wan
質問者

補足

早速のご指導ありがとうございます。 説明不足でお手数をおかけしてすみません。 トグルボタンの入力とは、トグルボタンを操作(押せなくする)出来なくすることが希望です。 Enabledを使うと表示が淡表示になるので少し希望と異なります。 IF文で、選択することはやっていますが、トグルボタンの操作を禁止するように設定したつもりがトグルボタンが操作できてしまうってことです。 余計説明が悪くなったかなぁ? 宜しくお願いします。

  • aa109
  • ベストアンサー率11% (36/310)
回答No.1

トグルボタンの入力ていうのがイマイチよくわかりません ボタンに入力するんですか? 単にボタンを無効にするというのであれば if条件で ある条件を満たしたときに ボタンクリックのプログラムを実行するようにする というのはどうでしょうか?

関連するQ&A

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

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

  • エクセルのシートの保護について

    今、エクセル2003でワークシートのデータを変更できないように、 シートの保護を設定しているところを今勉強しています。 ただ、あるセル範囲だけ、たとえばB4からD6の範囲は編集できるようにしたいのです。 それで、B4からD6の範囲は書式メニュー→セルの保護タブで、 ロックチェックボックスをオフにしました。 それから、ツール→保護→シートの保護で、シートを保護しました。 この時、B4からD6の範囲は、ロックをオフにしたので、 編集可能になるはずですよね? だけど、B4からD6の範囲意外のセルと同様、 セルの書式を変更できないんです。 これだったら、B4からD6の範囲のロックをオフにした意味が ないんじゃないでしょうか? ロックをオフにするとどう違うのでしょうか? よろしくお願いします。

  • Excelでインデント設定のVBAがうまく動かず困っています

    Excel2003でデータ入力用シートを作りました。 セルの入力時に、ボタンをクリックしてインデントを自由に増減できるように下記のVBAをボタンに設定しました。 With Selection .HorizontalAlignment = xlLef .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = .IndentLevel + 1 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End with 通常はうまく動作するのですが、対象セル以外の操作禁止のため「シート保護」を設定したところ、入力セルでこのボタンをクリックしてもエラーが表示され動作しません。 入力セルは、ロックを解除しており入力や編集はできます。 シート保護したシートでも、インデントのボタンがうまく動くようにするには、何か手立てはありますでしょうか。 どうぞお知恵をお貸し願います。

  • エクセルVBA シートの保護について

    エクセルの「シートの保護」について教えてください。 特定のシートのみ、保護したいと思っています。 そのシートの一定の範囲には、入力のみを許可したいです。 というのも、他の範囲(保護したい範囲)には、数式やvbaが設定されており、むやみやたらに「切り取り」や「行や列の削除」をされると困るからです。 そこで、 入力を許可する範囲を選択 →セルの書式設定 →保護のロックを外す →シートの保護 →「ロックされていないセル範囲を選択」を選択 しました。 この状態でマクロを実行すると、エラー1004(保護されたシートに対してこのコマンドは使用できません)とエラーが出ました。 エラー箇所は以下のとおりです。 Intersect(Worksheets("sheet1").Range("C5").CurrentRegion, Worksheets("sheet1").Rows("5:65536"), Worksheets("sheet1").Columns("C:T")).Select (質問1) ロックを外し、その後にシートの保護をする際、「全範囲を選択してから」シートの保護を行うものなのでしょうか。 それともシートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)で保護したことになるのでしょうか。 「全範囲を選択してから」シートの保護をすると、ロックを外したセルを選択しても、アクティブセルが罫線で囲われずどこを選んでいるのか分からなくなってしまったので。 もし、あえて全範囲を選択する必要がないなら、それでいこうと思っています。 (質問2) 上記エラーを解消するには、どうしたら良いのでしょうか。 全範囲を選択できないように保護していることが原因かと思い、全範囲について「シートの保護→ロックされたセル範囲の選択」を選んでもエラー解除できませんでした。 また、Intersect.Selectの一行上に「ThisWorkbook.Unprotect」と追加しても解除できませんでした。 2つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • エクセルスピンボタンの保護解除

    エクセルスピンボタンの保護解除について教えてください。 エクセル2003を使用しています。 (やりたい事) ・シートの保護 ・ですが、スピンボタンは使えるようにしたい。 (やった事) ・A1のセルにリンクするようにA1のセルの右横に、(表示→ツールバー→フォーム→スピンボタンを選び)スピンボタンを置きました。 ・スピンボタンのコントロールの書式設定→保護のチェック外しました。 ・ツール→範囲編集の許可→$A$1:$K$10をロック解除としました。 ・ツール→シートの保護→ロックされたセル範囲の選択とロックされていないセル範囲の選択にチェックを入れてOKを押しました。 ・ロックされたセル範囲の選択とロックされていないセル範囲のどちらか選ぶと両方選択されます。 (不具合) ・シートの保護をするとスピンボタンも使えなくなりました。 (質問) $A$1:$K$10とスピンボタン以外を保護したいのですが、 このような場合、私のやり方がおかしいのでしょうか? どなたか、教えて頂けませんか? 宜しくお願いします。

  • Excel VBAでは可でユーザーは入力不可のセル

    C5のセルはユーザーが入力できて、 C5セルに入力された値に応じてVBAで C7セルに処理した値を表示させたいのですが、 C7のセルはユーザーは入力(選択)できないようにしたいのです。 具体的には、 C5セルの書式設定の保護タブのロックを解除して ホームタブのセルグループの書式▼でシートの保護を選択して 表示される「シートの保護」のダイアログで デフォルトのままOKボタンをクリックすると C5セルのみ入力できて C5セル以外は入力できなくなります。 ユーザーにはこの状態にしておきたいのですが、 VBAでC7セルに入力できるようにする方法はないでしょうか。 (Windos7, Excel2010)

  • 【エクセル】シートを保護するとスピンボタンが使えなくなる。

    いつもお世話になってます。 エクセル2003で別の人が作ったファイルがあります。 シート上にスピンボタンがあります。 シートを保護してもスピンボタンは動作します。 そのスピンボタン自体にはマクロは設定されていません。 同じようなファイルを作ったのですが、私が作った物はシートを保護するとスピンボタンが動かなくなります。 ちなみに、前任者が作ったファイルのスピンボタンのコントロールの書式設定の「保護」タブのロックにはチェックが入ってます。 私のもそうしてみました。 前任者のファイル(シート)を保護する時、ツール→保護→シートの保護では、一番上の「シートとロックされたセルの内容を保護する」と「ロックされたセル範囲の選択」と「ロックされていないセル範囲の選択」だけにチェックが入ってます。 私のもそうしてみました。 その設定でシートを保護したところ、やはり私のファイルだけはスピンボタンが使えません。 他に何か理由は考えられるでしょうか? よろしくお願いします。

  • VBAでトラブル発生。

    Win7、Excel2010使用。 VBAにて、シートの保護(ロックされたセル範囲の選択、 ロックされていないセル範囲の選択、セルの書式設定)を しようと思い、見よう見まねで下記のコードを入れ実行した ところ、パスワード設定していないのに、解除する際に パスワードを求められるようになってしまいました。 その前までは通常のProtectで保護・解除ができていたので 原因は、変更したコードの実行によるものだと思います。 因みにSheet1は、パスワードなしで解除でき Sheet2、Sheet3はパスワードを求められるような 状況です。 【コード】 Sub test() Sheets("Sheet1").protect (AllowFormattingCells = True) Sheets("Sheet2").protect (AllowFormattingCells = True) Sheets("Sheet3").protect (AllowFormattingCells = True) End Sub このパスワードの解除方法など解決策がありましたら、 教えていただけないでしょうか?

  • エクセル、セーブ時自動でVBAを動かすには?

    エクセルのVBAモジュールに以下のマクロを登録してあります Sub マクロ1()     Cells.Select    ActiveSheet.Unprotect    Selection.Locked = True    Selection.FormulaHidden = False    ActiveSheet.Protect End Sub シートに書き込みを禁止するようにしてあるのですが、 シートの枚数が20枚以上有って、どのシートをきちんと 保護したか分からなくなってきて、不便なのですが、 複数に渡るシートに対して、セーブしたときに上の保護が かかるようにするにはどうすればいいですか? もしくは、一つのシートの上で複数のシートに対して 保護をかけていくにはどのようにすればいいのでしょうか? VBAの書き込む場所なども、sheetなのか、bookなのか、 モジュールなのかも教えていただければと思います。

  • エクセルシートの保護

    エクセルのシートに保護をかけたいのですが、 シートの中に、チェックボックスがあります。 チェックボックスの「コントロールの書式設定」で 「ロック」のチェックをはずしても、 シートの保護をかけると、チェックボックスにも保護がかかってしまいます。 シートの保護をかける時、 「データー」のチェックをはずすと、 チェックボックスにもチェックが入れられるようになるのですが、 それでは、他のセルにも入力が可能になってしまいます。 つまり、シート全体に保護をかけたいし、 当然、チェックボックスの機能も使いたいのですが、 セルの書式設定にある保護と フォーム・コントロールの書式設定にある「ロック」「文字列のロック」を、 どのように組み合わせればよいのでしょうか? そもそも、シート全体に保護をかけたいし、 チェックボックスの機能も使いたいのは、 可能なのでしょうか?

専門家に質問してみよう