• ベストアンサー

ユーザーフォーム上のボタンの使い方

ptakedaの回答

  • ptakeda
  • ベストアンサー率53% (7/13)
回答No.1

エクセルのVBAを使っているということでしょうか? 1.こつこつすべてのコントロールの挙動を書くのが一般的ですね。   面倒ならば、   foreachでまわしてフレーム上のコントロールすべてに対して、   control.enabled = false   かな?   こんな感じ Dim con As Control For Each con In Frame1.Controls con.Enabled = False Next 2.単純に各コンボボックスの変更のイベントで(選択コンボならクリック?)   で連結してやってセルに出してやればよいと思います。 3.同じように各コンボボックスの変更のイベントで入力状態をチェック   してチェックボックスの状態を変えてやればよいと思います。 4.空白の行を先頭から探しいって、見つかった空白セルに書き込めばよ   いと思います。

archer8
質問者

補足

ご回答、ありがとうございます。 使用しているのは、仰る通りエクセルのVBAです。 早速、1.を試したところ、グレーアウトにすることができました。 しかし、一度グレーアウトにしてしまうと元に戻せなくなって しまいました。 Next の後に、何か付け加えないといけなかったのでしょうか。 申し訳ございません。 2.3.ともに、“コンボボックスの変更のイベントで連結してセルに出す”や “イベントで入力状態をチェックしてチェックボックスの状態を変える” とはどのような操作になるのでしょうか。 インターネットでキーワード検索等をしてみたのですが、 わかりませんでした。 申し訳ございませんが、ご教授いただけますでしょうか。

関連するQ&A

  • EXCEL VBA ユーザーフォームについて

    仕事上システムを作り始めたVBA初心者です。すみませんが、ご教示下さい。 選択した「1の行」のC1をクリックしたときにユーザーフォームを起動させて入力しその行のセルに、数字の1を反映させたいと思っています。 その行は1で終了で今後足していきません。他の行に移ります。 フォームだけは作ってみたのですが反映の仕方がわかりません。 選択項目が多いので、2ページで作りました。 Page1 C1にテキストボックスで「#1」、D1に「#2」(記入ない場合有り)、F1に「#3」(記入ない場合有り)、H1にチェックボックス#4(選択ない場合有り)。 獲得コーナーのI1~Z1まで「Frame1」のグループどれか一組、チェックボックス(I1・J1・K1 3個ずつの連続)。3個中、左以外は記入ない場合有り。いずれかのグループに必ずチェック。 内訳の「Frame2」AA1~AK1のオプションボタン一つ必ず選択。 Page2 「Frame3」AL1、AM1、AN1で、オプションボタン一つ必ず選択。 「Frame4」チェックボックス複数選択「#11」AO1・PO1、 「#12」AQ1・AR1、「#13」AS1、AT1(記入ない場合有り) 「Frame5」AV1~AZ1複数選択 「Frame6」BA1~BC1複数選択 「Frame7」BD1~BE1複数選択 「Frame8」BF1~BI1オプションボタン一つ必ず選択。 選択後右下のコマンドボタンの「OK」ボタンで反映させたいと思っています。 選択セルが全てC列なのですが、複数選択する場所があるのと、シートが1日~31日と多いのです。(中身は全て一緒です。) 何を記入するとその行のセルに反映されるのかわからなかったのでご教示いただきたく思います。

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • ユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果保存

    VBA初心者で恐縮です・・・ ユーザーフォームにあるチェックボックスやオプションボタンなどの選択して作業を終えファイルやユーザーフォームを閉じると、次にファイルやユーザーフォームを開いたら、前回にチェックボックスやオプションボタンにチャックをいれたものが外れています。 このように、チェックボックスやオプションボタンにチェックをいれたのを、次回ユーザーフォームを開いたときに残しておくことは可能でしょうか? 可能なら、その方法をお教えください。 よろしく、お願いいたします。

  • ユーザーフォームいろいろについて

    いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと  選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を  指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。

  • ユーザーフォームでセルを選択

    エクセルのVBAでユーザーフォームに数値を入力してセルを選択することは可能でしょうか? 例えば、列はAに固定していいのですが、ユーザーフォームに「123」と入力してボタンを押せば「A123」のセルがアクティブになるようなユーザーフォームを作成したいのですが方法がわかりません。 よろしくお願いします。

  • VBA ユーザーフォームのオプションボタンについて

    VBA初心者です。宜しくお願い致します。 ユーザーフォームのオプションボタンをONにした時に、 楕円が入力されるようにしたいのですが、可能でしょうか?

  • 入力されたかどうか、オプションボタンが選択されたかどうかをチェックしたい

    入力されたかどうか、オプションボタンが選択されたかどうかをチェックして、OKなら次の入力にすすむとゆうプログラムを作りたいのですが、今回の場合、optAとoptBとoptCとがあり選択されたらcmbAとcmbBの入力(選択)を許可するとゆうプログラムを作りたいのです。簡単に If optA.Value = False And optB.Value = False And・・・ とゆうやり方はあると思うのですが、数が増えたときのためにもっと効率よくしたいのです。ネットには、 ユーザフォーム上に配置された各コントロールの入力チェックを行う段階でオプションボタンの値を効率的にチェックするには、フレームコントロール配下のControlsプロパティーから取得されるコレクションから各オプションボタンを取得し、Valueプロパティーを評価します。 '==================================================================== (For Each ループのネストによる手法) ※他のコントロールの評価も同時に行うことを想定しています 'フレーム数とTrueであったオプションボタンの個数とを比較 'OKが表示されない場合は未選択のオプショングループあり。 '===================================================================== また、フレームの数分だけのループを指定して入力チェックを行う場合は・・・ ====================================================================== (Controlsコレクションのインデックスからフレーム内のコントロールにアクセスする手法) と書いてあったのですが、初心者なものでよくわかりませんでした。この方法を詳しく解説もしくわ、他によい方法があればよろしくお願いします。

  • ユーザーフォームの呼び出し元

    ユーザーフォーム1で処理のボタンを押すと、パスワードの入力フォーム(ユーザーフォーム3)が表示されます。 ユーザーフォーム2でも処理のボタンを押すと、パスワードの入力フォーム(ユーザーフォーム3)が表示されます。 このようにパスワードの入力フォーム(ユーザーフォーム3)が共用の場合に、パスワードの入力結果を呼び出し元のユーザーフォームに帰したいのですが、 ユーザーフォーム1、2のどちらから呼び出されたのか、呼び出し元を識別する方法をアドバイス下さい。

  • ユーザーフォームから

    お世話になります。 ユーザーフォームにて、 オプションボタンでどれかを選択出来るようにし、 コマンドボタンで決定する様にしてあります。 選択した内容によりcallで別の標準モジュールに あるsubプロシージャに飛ばしたいのですが、 その記述方法が分かりません。 良くByvalの記述方法は見つかるのですが、 単純にsubプロシージャを実行したいだけなのです。 フォームの中に記述しても良いのですが、結構長くなって しまうので・・。 こういうやり方はおかしいのでしょうか。

  • エクセルのユーザーフォームについて

    エクセルマクロのユーザーフォームのテキストボックスに セルの値を表示する方法で質問です。 ユーザーフォームを表示するとその時点での セルの値はテキストボックスに表示されているのですが ユーザーフォームを表示したまま 別のブックのセルを選んだ際に そのセルの内容がテキストボックスに表示されるようにしたいです。 ボタンや、なにかをするわけではなく 自分で任意のセルを選択したら、という事です。 ユーザーフォームには selectionchange などがないのでどうすれば良いかわかりません。 宜しくお願いします。