• ベストアンサー

テーブルをコンボボックスで選びたい

いつも、お世話になっています。お願いします。 1つのフォームで複数のテーブルにデータ入力をしたいのです。 テーブルに、平成14年1月、平成14年2月、・・・、と 毎月分あります。 現在は、コマンドボタンを作成して、以下のようにしてます。 Private Sub コマンド1_Click() Me.RecordSource = "平成14年1月" End Sub Private Sub コマンド2_Click() Me.RecordSource = "平成14年2月" End Sub これですと、テーブルの数のコマンドボックスが必要ですので、 ちょっと、煩雑に見えています。 コンボボックスを作って、 テーブルを選べるようにしたいのですが、 式ビルダとか、見ているのですが、出来ません。 お教えください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

コンボボックスをcboTableNameとして、 Private Sub cboTableName_Change() Me.RecordSource = Me![cboTableName].Text End Sub ――ってのでどうでしょう?

yama3desu
質問者

お礼

コンボボックスの名前をcboTableNameとしました。 よく分からないので、イベントタブのところは、 変更時の[イベント プロシージャ]にお教えいただいた ように、記述をしましたが、コンボボックスにテーブル名が、何も出てきません。 プロパティのデータタブのところの コントロールソースには何を入れたらいいのでしょう。 などなど、分かりません。お願いします。

その他の回答 (2)

回答No.3

Access2000での前提でお答えします。 コンボボックスの値集合ソースに何もいれないと、表示されません。 (1)まずは、テーブル名を入れたテーブル(テーブル名は、仮に”平成テーブル名”としておきます。)を作成してください。 作成したテーブルのフィールドは、ID(オートナンバー型)、テーブル名(テキスト型)として、テーブル名フィールドに平成14年1月、平成14年2月、・・・と入力してください。 (2)コンボボックス(cboTableName)のプロパティで、値集合ソースを SELECT [平成テーブル名].[ID], [平成テーブル名].[テーブル名] FROM 平成テーブル名; とします。 列数は2、連結列は1としておきます。 (コンボボックスを最初から作成すると、ウイザードで指定できるので簡単ですが・・・) (3)コンボボックス(cboTableName)の更新後イベントに次のような処理を入力します。 Private Sub cboTableName_AfterUpdate() Dim strテーブル名 strテーブル名 = Me.cboTableName.Column(1) Me.RecordSource = strテーブル名 End Sub 'もし、テーブル名フィールドが、1番目ならColumn(0)、3番目ならColumn(2)としてください。 とりあえずは、これでできますので、お試しください。ご参考になれば幸いです。

yama3desu
質問者

お礼

ShadowMoonさん、ありがとうございます。 お教えどおりにやりましたが、当方が未熟ゆえに、 完了できませんでした。 コンボボックスに、SELECT [平成テーブル名].[ID]と出ます。 クリックすると、以下のエラーが出ました。 実行時エラー '3078': 入力テーブルまたはクエリ 'SELECT [平成テーブル名].[ID]' が見つかりませんでした。そのテーブルやクエリが存在していること、 または名前が正しいことを確認してください。 デバッグを押下すると、 Me.RecordSource = strテーブル名 の行を示します。 もっと、引き続いてお教え願いたいのですが、 ご迷惑をお掛けしそうなので、辞めておきます。 どうも、ご丁寧にありがとうございました。失礼します。m(_ _)m

  • harumimi
  • ベストアンサー率46% (51/109)
回答No.2

コンボボックスの指定の仕方は、 cboTableNameのプロパティで、   [値集合タイプ] = 値リスト   [値リスト] = "平成14年1月";"平成14年2月";"平成14年3月" と指定します。 [コントロールソース]は、何も指定せずに非連結で良いと思います。 それで、No1の方の回答のコードも指定します。

yama3desu
質問者

お礼

harumimiさん、ありがとうございます。出来ました。 感激しています!本当に、アドバイスを頂き、 ありがとうございました。m(_ _)m

関連するQ&A

  • アクセス コンボボックスについて

    コンボボックス 印刷ボタンについて アクセス勉強中です。 フォームで作成した画面 だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにてフォーム印刷ボタンを作成したのですが、 1000人くらいの、すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャという部分は下記です。 またプロジャー以外に何かしなければならないのでしょうか?? どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • コンボボックス 印刷ボタンについて

    アクセス勉強中です。 フォームで見ている画面だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにて印刷ボタンを作成したのですが、 すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャは下記です。 どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • Excel ユーザーフォームのコンボボックスについて

    始めまして、マクロに関してはまだまだ勉強中なのですが、ユーザーフォームのコンボボックスについてつまづいてしまい、皆さんにご教授頂ければと思います。 一つユーザーフォームを作成後、そのフォーム内にコンボボックスを配置し、リストから項目を選択できるようにしたいと考え下記のように記述したのですが、ユーザーフォームを実行してもフォームは表示されてきますが、ボックスを選択してもリストに項目が表示されてきません。 Private Sub cmd入力_Click() End Sub Private Sub 選択グループCombo_Change() With 選択グループCombo .AddItem "初級" .AddItem "中級" .AddItem "上級" Private Sub cmd閉じる_Click() Unload Me End Sub この記述自体が間違っているのでしょうか。 宜しくお願いします。

  • 親フォームからサブフォームのレコードソースを設定

    親フォームからサブフォームのレコードソースを設定するには? フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。 フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。 「テーブル1のサブフォーム」からなら Private Sub Form_Load() Me.RecordSource = "" End Sub とできるのですが、 やりたいことはフォーム1からのイベントなので 「テーブル1のサブフォーム」からのイベントは使えません。 だからってフォーム1の Private Sub コマンド2_Click() Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム" End Sub とするとコンパイルエラーになります。 良い方法があれば教えてください。アドバイスよろしくお願いします。

  • テキストボックスからコンボボックスへ自動入力したい

    AccessVBA初心者です。 Access2003を使用しています。 formAフォーム上の非連結textBテキストボックスに英字を入力 して、exe実行ボタンをクリックしたら、Cテーブルに連結した cmbCコンボボックスに該当文字列を表示したいです。 Private Sub exe_Click() If Me.textB.Value = "A" Then Me.cmbC.Value = 1 Else Me.cmbC.Value = 2 End If End Sub 実行ボタンをクリックしても、コンボボックスの内容は変わり ません。 if文にブレークポイントを設定してステップインで一行ずつ実 行するとコンボボックスに数字にあった文字列が表示できます。 うまく表示できるように、よろしくお願い致します。

  • コンボボックスについて

    コンボボックスでドロップダウンメニューが押された場合の処理は Private Sub ComboBox1_DropButtonClick() 処理 End Sub リスト項目がクリックされた時は Private Sub ComboBox1_Click() 処理 End Sub 上記の関数を組み合わせるにはどうすればよいでしょうか?用はComboBoxのドロップダウンメニューが押されて さらにリストの項目が選択してクリックした時はなんらかの処理を行うようにしたいのですがうまくいきません。よろしくお願い致します。

  • VBA コンボボックスのコード記述位置について

    初心者です。初歩的な質問でお恥ずかしいのですが、コンボボックス用のコードを 記述するには「Private Sub UserForm_Initialize()」の下に記述するしかないのでしょうか。 例えば、縦長のユーザーフォームに上からコンボボックス1、コマンドボタン、コンボボックス2を 配置した場合、コードの記述をコンボボックス1の処理、コマンドボタンの処理、コンボボックス2の処理と、順番通りに記述することは出来るのでしょうか? 現在はこのようにコードを記述しています。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "赤色" .AddItem "青色" .AddItem "黄色" End With With ComboBox2 .AddItem "緑色" .AddItem "黒色" .AddItem "紫色" End With End Sub Private Sub CommandButton1_Click() MsgBox "テスト" End Sub 本当であれば、下記のように順番通りに記述したいです。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "赤色" .AddItem "青色" .AddItem "黄色" End With End Sub Private Sub CommandButton1_Click() MsgBox "テスト" End Sub With ComboBox2 .AddItem "緑色" .AddItem "黒色" .AddItem "紫色" End With End Sub With ComboBox2の上に、必要なコードを記述すればできるのでしょうか。 ご教示下さい。

  • 【急いでます】コンボボックスのデータ型のエラー

    リストボックスにテーブルAのフィールド名を表示させフィールドを選択、オプショングループで演算子(=、>など)を選択、コンボボックスにそのフィールドのソースが表示されリストから値を選択し検索をかけたいと思っています。 リストボックスで数値型のフィールドを選択し、コンボボックスから値を選択するまではいいのですが、 その後リストボックスでテキスト型のフィールドに変更すると、コンボボックスにソースは表示されるのですが選択しようとすると、 このフィールドに入力した値が正しくありません。 たとえば、数値型のフィールドに文字列を入力しました。 とエラーが出てしまいます。 コンボボックスに前に選択したデータ型が残ってしまっているようなのです。 WEBでも検索し、色々試したのですがどれもうまくいきません。 これを回避する方法はないでしょうか? ---<現在のソース>---------------------------------------------------------------- リストボックス:listfield 演算子オプショングループ:opgEnzan コンボボックス:cboJoken Private Sub Form_Open(Cancel As Integer) strTable = lstfield.RowSource End Sub Private Sub lstfield_Click() opgEnzan = False End Sub Private Sub opgEnzan_Click() cboJoken.RowSource = "" cboJoken.RowSource = "SELECT DISTINCT " & lstfield & " FROM " & strTable & ";" cboJoken = Null cboJoken.ColumnWidths = "0cm" cboJoken.ColumnWidths = "4.5cm" cboJoken.SetFocus SendKeys "{F4}" End Sub

  • ACCESSを用いたデータベースでのコンボボックスの連動

    おせわになっております。 VBでデータベースを作っているのですが、 コンボボックスでの検索での絞込みがうまくいきません。 (データベースはAccess2000) 例えば、コンボボックス1で選ばれたファールドにより 絞込みが行われ(例:県選択:千葉県) 、コンボボックス2で表示するレコードは コンボボックス1で選択されたレコードに該当するものしか表示しないようにするというとです。(例:市選択:市川市.船橋市.浦安市・・・と絞り込まれる) どこかおかしい個所はありますでしょうか?? (個人的にはdbc1が選択された時点でdbc2のクエリーが行われなければならないと思いますが、やり方がわかりません。 よろしくお願い致します。 adoデータコントロールのプロパティ ado1(県名選択) RecordSource:SELECT 県名 FROM 地名 ado2(市名選択) RecordSource:SELECT 市名 FROM 地名 WHERE 県名='dbc1.Text' Private Sub dbc1_Click(Area As Integer)'県を選択するコンボボックス Dim criteria As String ' 検索条件 If dbc1.Text = "" Then Exit Sub End If criteria = "県名 = '" & dbc1.SelText & "'" rs.MoveFirst rs.Find criteria, , adSearchForward End Sub Private Sub dbc2_Click(Area As Integer)'市を選択するためのコンボボックス Dim criteria2 As String ' 検索条件 If dbc2.Text = "" Then Exit Sub End If criteria2 = "メーカ = '" & dbc2.SelText & "'" rs.MoveFirst rs.Find criteria2, , adSearchForward End Sub

  • 同じコンボボックス、リストボックスを使うには?

    よろしくお願いします。 今、ユーザーフォームを使って製造計画表を作っています。 コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。 1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。 ユーザーフォームの形的にはこのような感じですが。 1. コンボボックス  リストボックス 2. コンボボックス  リストボックス 3. コンボボックス  リストボックス 今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。 Private Sub UserForm_initialize() 'ComboBox1セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("Sheet1") Do While .Cells(1, ico) <> "" Me.ComboBox1.AddItem .Cells(1, ico).Value ico = ico + 1 Loop End With Me.ComboBox1.SetFocus End Sub Private Sub ComboBox1_Change() 'ListBox1セット Dim ico As Long 'Me.ListBox1.Clear ico = Me.ComboBox1.ListIndex + 1 With ThisWorkbook.Worksheets("Sheet1") Me.ListBox1.List = .Range(.Cells(2, ico), _ .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value End With End Sub VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。

専門家に質問してみよう