• 締切済み

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

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

みんなの回答

回答No.4

(2) の方ですが CheckBox の Change イベントでやると良いです。 Change イベントはチェックボックスの値が変化した時に発生するイベントです。 んで質問文には入ってないのですが、チェックボックスのチェックを外すとセルをクリアする仕様で。 ---- サンプル 1 ---- Private Sub CheckBox1_Change()  If CheckBox1.Value Then   Cells(1, 1).Value = "○"  Else   Cells(1, 1).Value = ""  End If End Sub Private Sub CheckBox2_Change()  If CheckBox2.Value Then   Cells(1, 2).Value = "○"  Else   Cells(1, 2).Value = ""  End If End Sub Private Sub CheckBox3_Change()  If CheckBox3.Value Then   Cells(1, 3).Value = "○"  Else   Cells(1, 3).Value = ""  End If End Sub If 文の書き方が変に感じますか? CheckBox の Value は True/False なので、If 文の条件判断にそのまま使えます。 上記のコードが何とも泥臭くダラダラしてると感じますか? なら下記のパターンではどうでしょうか。 ---- サンプル 2 ---- Private Sub CheckBox1_Change()  Cells(1, 1).Value = GetStringValue(CheckBox1.Value) End Sub Private Sub CheckBox2_Change()  Cells(1, 2).Value = GetStringValue(CheckBox2.Value) End Sub Private Sub CheckBox3_Change()  Cells(1, 3).Value = GetStringValue(CheckBox3.Value) End Sub Private Function GetStringValue(aValue As Boolean) As String  If aValue Then   GetStringValue = "○"  Else   GetStringValue = ""  End If End Function これは GetStringValue という関数を作り、3つのチェックボックスの Change イベントから使いまわすパターンです。 GetStringValue は True/False を受け取り、その値に応じて "○" か空文字を返します。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.3

Private Sub CheckBox1_Click() Range("A1") = "○" End Sub ですか? ユーザーフォームに載せたチェックボックスをダブルクリックすると記述できます。 ただ、CheckBox1にチェックが入ると○を表示しますが、消すのは出来ません。 必要ならCheckBox2_Click()とかでRange("A1")=""として下さい。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.2

お礼1.は質問でしょうか? ThisWorkBookモジュールのWorkBook_Openを使用すれば可能です。 2.はごめんなさい、まだ理解できないのですが・・・ シートモジュールの OptionButton1_Click() か OptionButton1_Change() で対応できませんか?

pumifumi
質問者

補足

2. ユーザーフォーム内に チェックボックスを3つ設けたとします。 『□A □B □C』ってな感じです。 例えば Aにチェックが入ったときは『a1』に○と表記させる Bにチェックが入ったときは『b1』に○と表記させる って感じでコマンドボタンが押されたときに チェックが入っている指定のセルに"○"と表記されるようにしたのですが これで、うまく伝わるでしょうか。 説明が悪くて申し訳ありませんが 何卒宜しくお願い致します。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

1.選択肢ウインドウはもうひとつのユーザーフォームにしてボタンを2個つけて、押されたほうの(選択したほう)ユーザーフォームを開いて、選択肢ウインドウのユーザーフォームを消す。 2.は質問の意味が解らないので補足を頂いたほうがいいと思います。

pumifumi
質問者

お礼

1.ファイルを開くと選択肢ウィンドウが自動(?)で呼び出す方法があ りますか。  単純なことでしたね^^;  ありがとうございます。

pumifumi
質問者

補足

2.ですが例えば  A,B,Cというセル項目があります。  ラジオボタンでBが選択された場合  Bのセルの下に『○』とコマンドボタンを押した際  表記されるようにしたいのですが  そんなこと出来ますでしょうか。

関連するQ&A

  • ユーザーフォームでのListBoxからの・・・

    Excelファイルを起動しシート上の様式に入力するユーザーフォームを初めて作成しております。 今回の質問ですが、フォーム上でのリストから合致する内容を別テキストボックスへ表示する様にしたいのですが御教授下さい。 ※VBA作成シート上ではVLOOKUP関数を使い使用しておりました。 例) ListBox1でリストで氏名を選択 → TextBox1へ氏名に合致するTEL番号表示  → 様式のセルへ転記 ※セルへの転記は心得ております。 Office2010 Win7での環境です。 初めてVBAをいじり、作動した時の喜びをニヤけながら作成しております。 どうぞ、よろしくお願いいたします。

  • Excel ユーザーフォームからの転記

    Excel ユーザーフォームからの転記 はじめまして、ご教授願います。 Exceiのユーザーフォーム内のテキストボックスのデータをシートに転記したいのですが、 教えてください。 テキストボックス内の改行を含んだデータを改行で区切って、別々のセル(縦に順に)に転記 したいのですが、方法がわかりません。 VBAでどのように書けばよろしいのでしょうか。 ご教授よろしくお願いします。

  • エクセルVBAのユーザーフォーム

    こんばんは、エクセルVBAでユーザーフォームを作成しました。 そこに入力したものがブックに反映するわけですが、フォームに0(ゼロ)を入力した場合、ブック上のセルを選択すると0と入っているのですが、表示されません。なぜでしょう???? これができないとせっかく時間をかけて作ったのに、使えません。どなたかご存知の方よろしくお願いします!!!!

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

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

    今、VBAの本とインターネットで調べながら初めてユーザーフォームを作成中ですが、 どうしてもわからないことがあり、ご質問させていただきました。 初歩的なことかも知れませんが、ご教授よろしくお願い致します。 1.オプションボタンを二つ作成しました。  一方を選択した場合、フレーム全体をグレーアウトに  することはできますか。  例)ユーザーフォーム上のオプションボタン  A:住所登録   (郵便番号・所在地等を入力)  B:電話番号登録 (電話番号を入力) ※Bをオプションボタンで選択した場合、Aのフレーム全体を  グレーアウト(入力禁止)にすることはできますか。 2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように  したのですが、ワークシートに反映する時、同一セルに入力するか、  それらの数字を認識して日付として一つのセルに表示することはできますか。  例)ユーザーフォーム上    2007▼年   4▼月  19▼日  ※一つのセルに“2007年4月19日”と表示することはできますか。 3.2.の続きで、"年"、"月"、"日"すべて選択している場合、  チェックボックスにチェックが入り、どれか一つでも空白の場合は  チェックボックスがグレーアウトしている、という状態はできますか。 4.ユーザーフォームで入力した内容がExcel上にどんどん   追加していく時のマクロはどのように記述したらいいのですか。  (ユーザーフォームに入力した内容を、セルを指定せずにどんどん  追記していく方法) 質問が多くて申し訳ございませんが、よろしくお願い致します。

  • Excelマクロ:ユーザフォーム上のテキストボックスにセルの選択範囲を転記

    ユーザフォーム上のテキストボックスにセルの選択範囲(例えば "A5:M31")を転記する方法についてお知恵を拝借願えればと思います。 【前提条件】 1.ユーザフォーム(UserForm1)がモーダルで表示されています。 2.ユーザフォームが表示されている時点では、望むべきセルは選択されていません。 3.テキストボックスが2つあります(TextBox1, TextBox2)。 【やりたいこと】 1.上記の2つのテキストボックスには、それぞれ違ったセルの選択範囲を表示したい。 2.上記の前提条件において、なんらかのトリガー(例えばコマンドボタン押下)によって、マウスドラッグによりセルを選択し、その範囲をテキストボックスに記入したい。 【補足】 1.【やりたいこと】の2で記しましたトリガー(例えばコマンドボタン押下)のタイミングでユーザフォーム(UserForm1)を非表示にするのは問題ありません。 2.できれば、セル選択時の MouseUpイベントでユーザフォームに転記させたいのですが、スクロールバー等の操作によるMouseUpイベントも入ってくる可能性が大です。 以上、必要な情報に不足がございましたら補足要求で指摘して頂ければ幸いです。 どうぞ、よろしくお願いいたします。

  • ユーザーフォームのコンボボックス

    エクセルのユーザーフォームでの質問です。 コンボボックスの項目についてsheet2のB2~B10を選択したいのですが、このユーザーフォームはsheet1で使うもので、プロパティのrowsource欄にセルを選択できません(やり方が分かりません)。 どう入力したら別シートのセルをコンボボックスに反映出来るのでしょうか??

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

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

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

  • ユーザーフォームのテキストで区切り位置を指定するには

    例えばエクセルのユーザーフォームで、テキストボックスを作成し、 そこにZ12X3456Y789のように入力してコマンドボタンのOKなどを押すと、セルA1に12 B1に3456 C1に789というように、それぞれの先頭のアルファベットを外して反映できるようにしたいのですがどうしたら良いでしょうか??

専門家に質問してみよう