• 締切済み

エクセルのVBAで質問です。

ExcelのVBAで質問です。コントロールで「1年1組」、「1年2組」、「1年3組」と定義されたコンボボックスと、「次へ」、「前へ」のボタンを作ります。コンボボックスで例えば「1年2組」を選択した時は、その下に別のbookにある1年2組の生徒の情報一覧を表示します。「次へ」ボタンを押すとコンボボックス内も「1年3組」と表示が変わり、下に表示される生徒の情報も別のbookの「1年3組」のものと切り替わります。同様に、「前へ」ボタンではコンボボックス内、生徒情報一覧それぞれが「1年1組」に変わります。ただ、コンボボックスが「1年1組」を選択した状態で「前へ」ボタンを押した時と、「1年3組」を選択した状態で「次へ」を押した時は、何もアクションがおこらないようにしたいと考えています。VBAではどのような方法があるのでしょうか?

みんなの回答

  • ABOM
  • ベストアンサー率0% (0/0)
回答No.2

ユーザーフォームのコードにIF文でマクロ指示を指定すればできます。Macro1~3は自動記録を使えば自由に動作を設定できます。下記にコードを書きます Private Sub ComboBox1_Change() If ComboBox1.Value = "1年1組" Then Application.Run "Macro1" Else If ComboBox1.Value = "1年2組" Then Application.Run "Macro2" Else If ComboBox1.Value = "1年3組" Then Application.Run "Macro3" Else End If End If End If End Sub Private Sub CommandButton1_Click() If ComboBox1.Value = "1年2組" Then ComboBox1.Value = "1年1組" Else If ComboBox1.Value = "1年3組" Then ComboBox1.Value = "1年2組" Else End If End If End Sub Private Sub CommandButton2_Click() If ComboBox1.Value = "1年1組" Then ComboBox1.Value = "1年2組" Else If ComboBox1.Value = "1年2組" Then ComboBox1.Value = "1年3組" Else End If End If End Sub Private Sub UserForm_Initialize() Dim myAr As Variant myAr = Worksheets("Sheet2").Range("A2:A4").Value With ComboBox1 'リストボックスのプロパティを指定 .Width = .Width * 1 .ColumnCount = 2 .List = myAr End With ComboBox1.Value = "1年1組" End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

こんな感じでしょうか。 sub 「前へ」ボタンのイベント if コンボボックスが「1年1組」 then Exit sub <処理> end sub >何もアクションがおこらないようにしたいと考えています。 ボタンの機能をプロパティで無効(淡色表示)にして、操作できないようにする方が、ユーザーには解りやすいかと思います。

関連するQ&A

  • エクセルシートでVBAについての質問です。

    VBA初心者です。 エクセルのシート上にコンボボックスを配置してリストを選択すると同じシート上のセルに選択されたリストが表示されるようにしたいのですが、よくわかりません。 コンボボックスのオブジェクト名は名前ボックスに表示される名前でいいのでしょうか? 詳しい方ご教授お願いします。

  • エクセルVBAでコンボボックス

    エクセルVBAのコンボボックスの使い方について質問します。 実現したいプログラムは 「チェックボックスから選んだ数字で計算するプログラム」 です。 具体的には… まず、コンボボックスをシート上に配置します。そのコンボボックスには 数字の1から10を選べるようにしておきます。 次に、コマンドボタンを配置します。これは単にプログラムをスタート させる目的です。 ユーザーは、まずコンボボックスから好きな数字を選択します。 そしてスタートボタン(コマンドボタン)を押します。 すると、選んだ数字の2倍がセルに表示されます。 さらに発展系としては… チェックボックスを4つ配置します。各チェックボックス には、+、-、×、÷を割り振っておきます。 また、コンボボックスを2つ用意し、それぞれ1~10の数字をリストにします。 ユーザーは、チェックボックスから好きな記号を選び、さらにコンボボックスから 好きな数字を選びます。そしてスタートボタンを押すと、選んだ数字を選んだ記号 で計算した値がセルに表示されます。 というようなプログラムを考えているのですが、うまくできません。 ポイントは、 ・チェックボックスにリストを入力する方法 ・チェックボックスの選択状態や、リストボックスから選ばれた数字を、  変数として取得する方法 インターネットで調べているのですが、リストボックスに値を入れるのにもマクロを走らせ なければならない方法とか、ユーザーフォームでの説明ばかりでなかなか実現に至りません。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform05.html プログラムのイメージ図としては添付の図の通りです。 どのようにプログラムを書けばいいのでしょうか。

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

  • Excel VBA シートのコピー時に、シート上のコンボボックスもコピーしたい。

    こんにちは。 Excel VBAについて質問させていただきます。 やりたいことは、 シートAにボタンとコンボボックスを配置し、 コンボボックスには氏名の一覧を設定しています。 そこで、ボタンを押すとシートAをボタンとコンボボックスごと シートBという名前でコピーをしたいと思っています。 ActiveSheet.Copy Before:=Worksheets(1) でシート・ボタン・コンボボックスのコピーはうまく出来たのですが、 コンボボックスに設定していた氏名の一覧はコピーされていませんでした。 コピー先のシートのコンボボックスにもう一度氏名の一覧を 設定するしかないのでしょうか? それともシートのコピー時に何かいい方法があるのでしょうか。 宜しければアドバイスをお願い致します。 OSはWindows2000Pro Excelは2000です

  • Excel VBA コンボボックスの初期値の設定について

    いつもお世話になっています。 Excel VBA コンボボックスの初期値の設定について教えてください。 ユーザーフォームを表示させた時、そこにあるコンボボックスには何も表示されていません。 コンボボックスのボタンを押すとちゃんと 「アジア」「ヨーロッパ」「アメリカ」等の語群が表示されます。 ユーザーフォームを表示させた時点でコンボボックスに「アジア」を表示させるにはどうすればいいか教えてください。 よろしくお願いします。

  • コンボボックスの貼りつけ excel

    vba初心者です。excel帳簿を作っております。 科目選択時にリストが28個あるプルダウンを使っておりましたが選択するのが大変だったのでコンボボックスにしたら28個全て表示されるようになり選択が楽になりました。 このコンボボックスのLinkedCellはD4です。 コンボボックスをD4の上に表示してD4セルにピッタリはめ込んでいる感じに見えます。 D4以下150個、D列にコンボボックスを貼りつけたいです。 コピーして貼り付けてもLinkedCellはD4のままですので、貼りつけたコンボボックスのプロパティを150回変えないといけないのかと思うと気が遠くなります。 このコンボボックスを何か登録して、「コードの表示」あたりで何かやれば何とかなるのではないかと思ったのですが、何か手立てがあれば教えてください。 このコンボボックスを同じブックの別のシートにも使いたいと思っております。

  • アクセスのVBAなんですけど

    アクセスのVBAでフォームからフォームへ値を渡すことはできますか?具体的にいうとあるフォームでコンボボックスから選択し、OKボタンで次のフォームを開くのですが、初めのコンボボックス(ちなみに5つ選択項目があります)で選んだ条件でフォームの表示内容を変更させようと思っています。 今のところ、選択した項目を一時的にテーブルに保存して、新しいフォームが開くときにテーブルから値を取得してやるのか・・・・と考えているのですが、まどろっこしいので・・・・・よろしくお願いします。

  • エクセルVBAでコンボボックスの非表示について

    最近VBAを勉強し始めたのですが、コントロールについてわかりませんので、ご教授お願いします。 コンボボックスを初期では非表示、トグルボタンをクリックすると、コンボボックスを表示させる方法を教えてください。 ユーザーフォームについてまだ未熟なので、すみませんがよろしくお願いします。

  • エクセル VBA コンボボックスで検索

    エクセルVBA初心者です。 シート1行目には工場名、2行目に見出し、3行目からデータが記入されています。 2行目に見出しとして、A列には作業者名、B列に工事番号、C列から作業時間などが記入されています。 ユーザーフォームにコンボボックス、コマンドボタンを設置し、コンボボックスには工事番号一覧が表示されるようにするところまではできましたが、コンボボックスで工事番号を選択し、コマンドボタンを実行することで、1シート内の一致する行だけを表示したいのですが、いろいろなサイトを参考に試してみたのですがうまくいきませんでした。 同じ内容のシートが複数ありますが、シート毎での検索・抽出をしたいと考えています。 どのようなコードを作成したら良いのかご教授願えたら幸いです。 よろしくお願い致します。

  • VBAのコンボボックスでコメントみたいな表示はできないでしょうか?

    VBAでユーザーフォームにコンボボックスを設置してます。このコンボボックスを開くと現在10項目位表示できるようにしているのですが、この表示内容の詳細をコメントみたいな感じで表示させることは可能なのでしょうか?たとえばコンボボックスで「スイッチ」と「ボタン」が選択できるとします。この状態では入力者はよく分からないため、たとえば「スイッチ」を選択する前に「スイッチ」の上にマウスのポインターを置くと「切り替えスイッチ」「ロータリースイッチ」等の詳細表示をエクセルのコメントとように表示させ、それを確認して入力者は選択をする。見たいな感じのことはできないのでしょうか?分かる人がいたら教えてください。よろしくお願いします。

専門家に質問してみよう