• ベストアンサー

クリックしたボタンによってSelect分で分けたい

accessのフォームのINDEX画面にて クリックしたボタンによって取得するテーブル名を分けたいのですが、 それは可能でしょうか? いろいろ調べたのですが、見つからず。。。 ↓こんなかんじのようなことがしたいです。 Function strTbl() As String If A出力_Click Then strTbl = "[A_5_通常処理]" ElseIf B出力_Click Then FstrTbl = "[B_3_月次処理]" End If End Function

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

案1 取りあえず必要なだけコマンドボタンを配置する 5個だと仮定して フォームのモジュール内に Function cmdSel()   Dim cb As Control   Set cb = Screen.ActiveControl   Select Case cb.Name     Case "コマンド0"       MsgBox "0"     Case "コマンド1"       MsgBox "1"     Case "コマンド2"       MsgBox "2"     Case "コマンド3"       MsgBox "3"     Case "コマンド4"       MsgBox "4"   End Select   Set cb = Nothing End Function とします。 各コマンドボタンのクリック時イベントの欄に =cmdsel() としてみてください。 案2 「オプション グループ」コントロールを配置し(仮名フレーム1) その中にトグルボタンを5個配置し、それぞれのオプション値を0~4にします。 オプショングループのクリック時イベントに Private Sub フレーム1_Click()   Select Case Me!フレーム1.Value     Case 0       MsgBox "0"     Case 1       MsgBox "1"     Case 2       MsgBox "2"     Case 3       MsgBox "3"     Case 4       MsgBox "4"   End Select End Sub Accessのバージョンが不明なので2010の場合↓ http://hamachan.info/win7/Access/option.html

ruby-amor
質問者

お礼

案1を使わせて頂き、無事やりたいことができました。いろんなやり方があるのですね。案2も今後の参考にさせて頂きます。 ありがとうございました。

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

> クリックしたボタンによって取得するテーブル名を分けたい フォームのレコードソースを分けたいということですか Private Sub A出力_Click() Me.RecordSource = "[A_5_通常処理]" End Sub Private Sub B出力_Click() Me.RecordSource = "[B_3_月次処理]" End Sub

ruby-amor
質問者

お礼

いろんなやり方があるのですね。今後の参考にさせて頂きます。 回答ありがとうございました。 また宜しくお願いします。

関連するQ&A

  • エクセル ダブルクリックで処理日の入力

    お世話になります。 先般、お教え頂きました別のダブルクリックイベントプロシージャと 下記の当日の日付を入力するという処理を同じシート上で行いたいのですが、VBエディターにどのように記述したら良いかわかりません。 当方、かなりの初心者です。 よろしくご教授くださいませ。 【新しく加えたい処理】 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("b4:C999")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Date Cancel = True End If End Sub 【もともと使っている処理】 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("h1:h999")) Is Nothing Then With Target If .Value = "" Then .Value = "有" ElseIf .Value = "有" Then .Value = "無" ElseIf .Value = "無" Then .Value = "" End If End With ElseIf Not Intersect(Target, Range("i1:i999")) Is Nothing Then With Target If .Value = "" Then .Value = "要" ElseIf .Value = "要" Then .Value = "不要" ElseIf .Value = "不要" Then .Value = "" End If End With End If End Sub よろしくお願いします。

  • Excel VBA 条件分岐のスマートな書き方

    すみません。すごく初歩的な質問なのですが、 Excel VBAで以下のような条件分岐をさせたい場合、 もっとスマートな書き方できませんか? 命題 AとBに対して if not A then 処理X end if if not B then 処理Y end if if not(A and B) then 処理Z(この処理の中には処理Xと処理Yの結果が含まれている) end elseifを使った書き方が思い浮かばず、 同じことを何度も書いているようで、もっと上手に書けそうな気がしまして・・・ どなたかご教示頂けたらと思います。

  • ACCESSVBAでラジオボタンを実行させたい

    フォームにラジオボタンを作成し、それぞれ、A・Bと設定しました。 (プロパティで”名前”を”A””B”とした) そこで、Aを選択した場合に、Aのコードを実行させ、 Bを選択した場合にBのコードを実行させたいと考えています。 以下のコードを作成しましたが、うまくいきません。 どこが間違っているのでしょうか。よろしくおねがいします。 ********************************************** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.htm " Open fNAME For Output As #1 Print #1, "<html>" Print #1, "<head></head>" Print #1, "<body>" If & A & = True Then Print #1, "<table>" … Print #1, "</table>" ElseIf & B & = True Then Print #1, "<table>" … Print #1, "</table>" End If Print #1, "</body></html>" End Sub

  • キャンセルボタンをクリックしたかどうかを取得したい

    InputBoxでもしキャンセルボタンが押されたら・・・ってどうやればいいですか? Sub あああ() Dim a As String a = InputBox("文字を入れてください。") MsgBox a End Sub をした時に、キャンセルボタンをクリックしたかどうかを取得したいのですが、どうすればいいんですか? a = InputBox("文字を入れてください。") の次に Cancel = True をいれても vbCancel = True をいれてもエラーになります。 Sub あああ() Dim a As String a = InputBox("文字を入れてください。") If a = "" Then MsgBox "キャンセルが押されました" End If End Sub これだとOKでもキャンセルでもメッセージが表示されます。

  • ダブルクリック 条件 分岐 

    こんばんは VBAの勉強をはじめたばかりの素人です。 いろいろ調べたのですが自分の学習不足もあってかなかなか 回答に結びつかなかったので質問させてください。 シートの("A:A")をダブルクリックしたらフォーム1を表示する シートの("B:B")をダブルクリックしたらフォーム2を表示する シートの("C:C")をダブルクリックしたらフォーム3を表示する といった簡単なイベントなのですがうまくできません。 '----------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If ActiveCell.Address = ("A:A") Then 1.Show ElseIf ActiveCell.Address = ("B:B") Then 2.Show ElseIf ActiveCell.Address = ("C:C") Then 3.Show End If End Sub '----------------------------------------------- 又は '----------------------------------------------- Private Sub Workbook_Open() ActiveWorkbook.Worksheets("Sheet1").OnDoubleClick = "Test" End Sub Public Sub Test() A列 = 1 B列 = 2 C列 = 3 現在位置列 = ActiveCell.Column 現在位置行 = ActiveCell.Row Select Case ActiveCell.Address Case 現在位置列 = A列 1.Show Case 現在位置列 = B列 2.Show Case 現在位置列 = C列 3.Show End Select End Sub '----------------------------------------------- などがが今の私ができる最大限の内容ですが、全く違うようです。 素人質問で大変申し訳ありません。 勘違いが多々あるかもしれませんが教えてください。 以上宜しくお願いいたします。

  • メッセージボックスの使い方の確認

    VB.netを使っています。 メッセージボックスのことでわからなくなったので、 質問させてください。 If MsgBox(・・・・, MsgBoxStyle.YesNoCancel, MessageBoxDefaultButton.Button3) = MsgBoxResult.Yes Then ElseIf MsgBoxResult.No Then End ElseIf MsgBoxResult.Cancel Then Call sWaitTime(5000) End If こういう感じで作っていまして、はいをクリックすると次の処理に移ります。 いいえだとendの処理をしてくれます。ところがキャンセルをクリックしてもendの処理をしてしまいます。 どうにか待機の処理をさせたいのですがどうしたらよいのでしょうか?

  • 先ほどの質問の続きですで申し訳ございません。

    Option Explicit Function getCode(MyTime As Date) As String  Dim wsTime As Date  wsTime = MyTime - Int(MyTime)  If wsTime = TimeSerial(5, 30, 0) Then   getCode = "A"  ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _      (wsTime < TimeSerial(5, 30, 0))) Then   getCode = "B"  ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _      (wsTime < TimeSerial(2, 45, 0))) Then   getCode = "C"  ElseIf wsTime < TimeSerial(1, 0, 0) Then   getCode = ""  Else   getCode = ""  End If End Function これで、参照セルを変えるでかけでみごとに動きました。 もう一点質問です。 Function で数式を呼び出せるとはわかりますが、 セルの内部に「=getCood(参照セル)」だけでは、申し訳ございませんがいまいち理解ができません。 あえて、通常の「 Sub...() 」で書いた場合はどうなるんでしょうか?

  • access タブコントロールの選択

    フォームAを選択したらAction1,フォームBを選択したらAction2, というモジュールをつくったのですが、そのフォームをタブに入れることにしたため isOpenが使えなくなってしまいました。 タブAを選択していたら、Action1,タブBを選択していたら、Action2, というモジュールに書きかえるにはどうしたらいいですか? ----------------------- Function GetValue() If IsOpen("F_C_2_☆新規作成_パターン1") Then GetValue = Forms![F_C_2_☆新規作成_パターン1]![見積番号] ElseIf IsOpen("F_C_3_☆新規作成_パターン2") Then GetValue = Forms![F_C_3_☆新規作成_パターン2]![見積番号] End If End Function

  • コマンドボタンによる一括制御

    VB6.0について質問です。 コマンドボタンをクリックすると一括選択でき もう一度クリックすると一括解除するような処理を行いたいのですが どのようにやればいいですか? 現在IF文でやっているのですがうまくいきません>< For a = 1 To spdlist.MaxRows spdlist.Row = a If spdlist.Text = 0 Then spdlist.Text = 1 ElseIf spdlist.Text = 1 Then spdlist2.Text = 0 End If Next これだと一括で解除するときにすべて選択されていないとおかしなことになります;;

  • エクセルVBAマクロのオプションボタンについて

    オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

専門家に質問してみよう