アクセスのボックスの名前の取得方法

このQ&Aのポイント
  • マイクロソフトアクセスのフォームに複数のボックスを設置し、ボックスをクリックするとマクロが走る仕組みです。ボックスの名前を取得する方法が分からず、他の良い方法があれば教えてほしいとのことです。
  • ボックスの名前をA1、A2などとして、VBA上で取得して値によって分岐させる方法も考えられますが、ボックスの名前の取得方法がわかりません。
  • マイクロソフトアクセスのボックスの名前を取得する方法について教えてください。
回答を見る
  • ベストアンサー

アクセスのボックスの名前の取得方法

初歩的な事で申し訳ございません。 マイクロソフトアクセスで、フォームの上に複数のボックスを設置しており、そのボックスをクリックするとマクロが走る様にしています。 ボタンは、エクセルのマスの様な配列で、A1を押したらAのマクロが走ってその後、1のマクロが走ります。 B1を押したらBのマクロが走りその後、1のマクロが走るという風にしております。 マス(ボタン)がものすごくあり、一つ一つにマクロを入れるだけでも、複数行になってしまいます。 何か良い方法等があれば教えてください。 ただ、単にボックの名前をA1,A2等にして、VBA上で取得してその値によって分岐させるだけでも良いのですが、ボックスの名前を取得するコードも分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.2

コードをコピペするときにイベントごとに一部(Aや1など)書き替えなくていいようにしたいという事ですね。 ActiveControl.Nameでクリックされたコントロール名が取得できます。 ただ、実行したいプロシージャが変わった場合、コントロール名やプロシージャ名を変更しなければいけないので後が面倒な気もします。 あと、蛇足ではありますがアクセスの場合、マクロというとVBAと別のものの事なのかなと考えてしまいます。 Private Sub A1_Click() Dim CtrName As String CtrName = ActiveControl.Name Call myCode(CtrName) End Sub Private Sub B2_Click() Dim CtrName As String CtrName = ActiveControl.Name Call myCode(CtrName) End Sub Function myCode(ByVal CtrName As String) Dim str As String, n As Long str = Left(CtrName, 1) n = CLng(Right(CtrName, 1)) Select Case str Case "A" Call マクロA Case "B" Call マクロB Case Else Call マクロC End Select Select Case n Case 1 Call マクロ1 Case 2 Call マクロ2 Case Else Call マクロ3 End Select End Function

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.1

ボックスとボタンとがあってどちらもクリックしたらマクロなのですか? > マス(ボタン)がものすごくあり、一つ一つにマクロを入れるだけでも、複数行になってしまいます。 ボタンをクリックしたら何かをするのでしたら、全てのボタンのクリックイベントは作成しなければいけません。 (クラスを使って動的にイベントプロシージャを作成という手もありますが、現状では無理だと思います) ボタンごとに動作が同じなら(ほぼ同じなどでも場合によっては可能)イベントプロシージャ(VBA)にして Private Sub ボタン1_Click() Call myCode("ボタン1") End Sub Private Sub ボタン2_Click() Call myCode("ボタン2") End Sub Function myCode(ByVal myName As String) MsgBox myName 'クリックしたボタンの名前がメッセージボックスででる 'など共通でやりたいことのコード End Function とでもしておけば、やりたいことのコードは一か所に記載するだけですみます。 > 単にボックの名前をA1,A2等にして、VBA上で取得してその値によって分岐させるだけでも良いのですが どのタイミングで取得するのでしょう?VBAは何から起動するのでしょう?やりたいことがいまいち想像できません。 ボックス1のクリックイベントのプロシージャでしたら Private Sub ボックス1_Click() End Sub になりますから名前はこの時点でわかります。

shinji159
質問者

補足

困っていたので、回答が来て本当に感謝します。 すみません、私の書き方が分かりにくかったです。 >どのタイミングで取得するのでしょう?VBAは何から起動するのでしょう?やりたいことがいまいち想像できません。 A1 B1 C1… A2 B2 C2… A3 B3 C3… … 上記の様に(上記は9個のボックス)があり、各ボックスをクリックすると、マクロが走る様にします。もちろん全てにクリックイベントのプロシージャは書くつもりです。 イメージとしては、 Private Sub A1_Click() Dim str As String Dim n As Long (自分のボックス名を取得) str=(自分のボックス名の右から1文字取得) n=(自分のボックス名の左から1文字取得) If str = "A" Then call マクロA ElseIf str = "B" Then call マクロB Else call マクロC End If If n = 1 Then call マクロ1 ElseIf n = 2 Then call マクロ2 Else call マクロ3 End If End Sub Sub マクロA() ………… End Sub ……… という風にしたいと思っております。 同様にB2をクリックした場合も Private Sub B2_Click() (上記コードをコピペ) End Sub で書いていきます。 どうぞよろしくお願いいたします。

関連するQ&A

  • リストボックスの値取得方法について

    VBAでリストボックスを使用しています。リストボックスの中には、A,B,C,D,Eと表示されています(カンマは行とします。 つまりリストボックスには5行表示されています)。選択はされていない状態です。この状態でボタンを押すことにより ループで各行の値を取得したいと思っています。listcountを利用してlistcountの数までループをまわし、各行の値を 取得したいです。値というのは、A,B,C,D,Eです。この値を配列なり変数なりにいれたいのです。 どのリストボックスのプロパティを利用すれば、選択されていないリストボックスの各値を取得することができるでしょうか?

  • セル範囲の取得

    エクセルの名前ボックスでセルA1からA10までの範囲に名前をつけた場合、この名前をVBAマクロに用いてA1とA10の行番号を取得することは可能でしょうか? よろしくお願いします。

  • access 2000のマクロビルダで困っています

    access2000のマクロビルダでアドバイスお願いします。 とあるフォームで 「a」というテキストボックスがあります。 条件検索用のボックス「A」を設けて、「検索」というコマンドボタンを作成しました。 このボタンを マウスボタンクリックした時に、マクロビルダで、条件を設定し 抽出するというものです。 これは希望通りに抽出できたのですが、 次に、同じフォームで「b」というテキストボックスを設けて、条件検索用ボックスで「B」を作成しましたが、 これを、「検索」という一つのコマンドボタンで「a」と「b」2つの検索条件を満たす、リストをマクロビルダで作成したいのですが、 やり方がどう頑張っても分かりません。 できれば、マクロビルダで、もし無理なら、VBAでアドバイスを頂ければ大変ありがたいです。 どうかよろしくお願いします。

  • access テキストボックスの値取得

    いつもお世話になりますm(_ _)m access VBAをかじり始めた「超・初心者」です(^^;) フォームの画面にテキストボックスを作成し、そこに入力した値を取得したいのですが、どのようにすればよろしいのでしょうか?別に置いたコマンドボタンをクリックすると取得するようにしたいのです。 気軽に、コマンドボタンのイベントプロシージャに、 ----- dim rec as variant rec=textbox1.text   'recは、「テキストボックス1」に入力した値 ----- なんてやってみたんですが、全然ダメで、いろいろ検索してもさっぱり分かりません。 あほくさいほど初歩的な質問で恐縮ですが、なにとぞよろしくお願いいたしますm(_ _)m xp+access2003です。

  • execlでリストボックスへの入力

    エクセルでシート1のコマンドボタンが押されたらシート2の一覧表を リストボックスやテキストボックス等に表示させたいのですが、どのようにマクロを書けばいいのでしょうか?教えて下さい。 例)シート2   A    B 1 名前1 点数1 2 名前2 点数2 3 名前3 点数3 上記の表をボタンが押されたらボックスに名前1~点数3まで表示したいのですが!

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

    ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。

  • マウスを使わずにコンボボックスの内容を選択するには

    いつもお世話になっています。 Access2000で、マウスを使わずにコンボボックの内容を選択したいのですが、↓ボタンを押下してもデータが選択されず、困っています。↓ボタンを押してしまうと、次のテキストボックスやコンボボックに遷移してしまいます。(TABキーと同じ働きをしてしまいます。) KeyDownイベントを使用したらうまくいくのかと思いコーディングしたのですが、やはり、選択できませんでした。どのようにしたら、↓ボタンを押下してコンボボックの内容を取得できるでしょうか。 どなたかご教授お願いします。

  • VBAテクストボックス

    VBAでテキストボックスにセルから読み込んだデータを表示して 同一フォーム内にあるボタンで条件分岐するようなことは出来ますか。 一つの条件分岐が済んだらまた次のセルからデータを引っ張ってきてテキストボックスに表示させる ようなことを行いたいのですが。

  • 【Excel】チェックボックス情報取得【VBA】

    お疲れ様です。 チェックボックスの現状を取得したいです。 ネットで調べていて色々見つけたのですが、 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_checkbox.html このサイトの方のVBAが参考になるかと思ったのですが、 頭が回らず、良く分からない状態です。 チェックボックスは A B C D E F と6つ作成しており、 その隣に Atext Btext Ctext Dtext Etext Ftext というテキストボックスを作成しています。 ひとつのみチェックがついていた場合と 複数チェックがついていた場合の出力を変更したいと思っています。 例 Aのみにチェックがついていた場合 A1のセルに「a1」と入力 Bのみにチェックがついていた場合 A1のセルに「a2」と入力 A、Bにチェックがついていた場合 Atext~Ftextまでのどこまでデータが入っているかを確かめる A1のセルに「a1100」(Dまで入っていた場合) A1のセルに「a11000」(Eまで入っていた場合) データ出力は、必ず頭に「a」を入力します。 一つだけチェックが入っている場合は、上から順番にAならa1、Bならa2,Cならa3と入力 複数チェックが入っている場合は、テキストボックスに入っているデータの個数を確認し、 「a」と、選択されたデータを「1」テキストボックスに入っているけど選択されていないデータを「0」 とA1セルに表記します。 チェックボックスとテキストボックスの名称は、上から A  AText B  BText C  CText D  DText E  EText F  FText という名称になっています。 ぐちゃぐちゃした文章で大変申し訳ありませんが、回答よろしくお願いいたします。

  • VBAのチェックボックス結果を集計したい

    Excel上でVBAのチェックボックスやオプションボタンを使ったアンケートを作りました。 このアンケート結果(チェックボックスなどのオン・オフ)を集計したいのですが、回収件数が多いので、自動的に処理したいのです。 複数のExcelファイルが回収して集まってきます。 どのようなマクロやVBAを作ればよいか、教えて下さい。

専門家に質問してみよう