• ベストアンサー

Accessで同じ処理を記述するとき

Access2002を勉強しています。 次のようなプロシージャで疑問を持ちましたので教えてください。 (例) Private Sub AAA()   処理1   処理2   End Sub Private Sub BBB()   処理1   処理3   End Sub Private Sub CCC()   処理1   処理4   End Sub (例)で示す通り同じ内容の処理があるとき、それぞれに同じ内容の処理を記述していますが、何か良い記述の方法があるような気がしますが? 私の思い過ごしでしょうか。教えてください。

  • siba10
  • お礼率66% (800/1201)

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

  • ベストアンサー
  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.1

良い所に気がつきましたね(笑) Private Sub AAA()   CALL 処理1   CALL 処理2   End Sub Private Sub BBB()   CALL 処理1   CALL 処理3   End Sub Private Sub CCC()   CALL 処理1   CALL 処理4   End Sub Private Sub 処理1()   処理1の内容 End Sub Private Sub 処理4()   処理4の内容 End Sub で良いと思います。

siba10
質問者

お礼

早速ご回答いただきましてありがとうございます。 Private Sub AAA()   CALL 処理1      処理2の内容   End Sub Private Sub BBB()   CALL 処理1      処理3の内容   End Sub Private Sub CCC()   CALL 処理1      処理4の内容   End Sub Private Sub 処理1()   処理1の内容 End Sub で、うまくできました。 おかげで随分助かります。 別件の疑問が出来ました。新しく質問を出しましたのでよろしく。

関連するQ&A

  • Access(VBA)のエラー処理

    いつもお世話になりますm(__)m Access2003(VBA)のエラー処理について教えて下さい。 いつも、エラー処理は、各private sub毎に記述しています。 例えば private sub A() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub private sub B() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub 上記のようにしていますが、エラー処理は共通で、どうにか1つの記述(?)で全てのプロシージャに対してエラー処理が出来ればと思っています。 いろいろ調べましたが見あたらず、今は一つ一つのプロシージャに「on error...」と書いています。 MDBファイル単位で「エラーがあるとこれを実行」のような共通のエラー処理を実装する事は出来ないのでしょうか? お詳しい方、是非ご教授下さい。可能であればサンプルを記述頂くと助かります。 宜しくお願い致しますm(__)m

  • 大量のオブジェクトで同様のイベント処理をしたい場合の記述

    Excel VBAでフォームなどに大量のオブジェクトを配置して、各々のオブジェクトで同様のイベントを処理したいのですが、まとめて記述する方法はあるのでしょうか。 ユーザーフォーム上に大量の数値入力ボックス(TextBoxオブジェクト)を配置して、全てのボックスに同様の入力値制限を課そうとして、コードが肥大化して困っています。どうかよろしくお願い致します。 例) Sub TextBox1_change() <プロシージャー> end sub Sub TextBox2_change() <プロシージャー> end sub ・・・・・・ Sub TextBox10_change() <プロシージャー> end sub (<プロシージャー>部分は共通)のように延々と記述しなくても済む方法はあるのでしょうか。

  • アクセスのVBEの初歩的な質問

    アクセス(に限らないとは思うのですが)のVBEを今、一生懸命勉強しているのですが、初歩的なところで、つまずいています。 あああ いいい ううう えええ 1 1 あいうえお かきくけこ 1 2 あいうえお かきくけこ 1 3 あいうえお かきくけこ 2 1 あいうえお かきくけこ 2 2 あいうえお かきくけこ 2 3 あいうえお かきくけこ 3 1 あいうえお かきくけこ 3 2 あいうえお かきくけこ 3 3 あいうえお かきくけこ というような、データを自動で入力したいのです。多分、for next と、do until あたりを組み合わせるとできると思うのですが、どうしてもうまくいきません。 とりあえず、以下のような、めちゃめちゃ効率の悪いコードを書いたのですが、もっと効率よくするには、どうしたらいいでしょうか?  ………………………………………………… Private Sub コマンド6_Click() Dim Aaa As Integer Dim Bbb As Integer Dim Ccc As String Dim Ddd As String DoCmd.GoToRecord , , acFirst Aaa = 1 Bbb = 0 Ccc = "あいうえお" Ddd = "かきくけこ" For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 2 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 3 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i End Sub …………………………………… ほんとうに、おはずかしいのですが、どうかご指導くださいませ。m(__)mm(__)m

  • 【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?

    【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  環境:Vista+VB2008 でございます。 例えば下のようなコードがあったといたしまして、  Sub AAA    Call BBB  End Sub  Sub BBB    Call CCC  End Sub  Sub CCC    '★  End Sub 特定の条件の時のみ、★マークのところで、動作を終了したい (Sub AAAのEnd Subに移動したい)場合、どのようにすべきでございましょうか?? Exit SubだとSub CCCしか抜けてくれませんし(Sub BBBから実行を続行してしまう)、 フラグ立てだと  Public フラグ as string =""  Sub AAA    Call BBB    If フラグ = "抜ける" then Exit Sub     End Sub  Sub BBB    Call CCC    If フラグ = "抜ける" then Exit Sub     End Sub  Sub CCC    If (抜けたい時)then     フラグ = "抜ける"     Exit Sub    End If     End Sub のように、コードが少し見にくくなってしまいます。。。 何か他のスマートな方法などございましたら、是非ともご紹介いただきたくお願いいたします。 もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • VBA コンボボックス

    VBAコンボボックスで AAAを選択→処理A BBBを選択→処理B CCCを選択→処理C としている場合、 AAAを選択→処理Aの後、コンボボックスで再度AAAをクリックしても次の処理Aにいきません。いったんBBBをクリックしてしてAAAをクリックすると処理Aに行きますが、連続AAAをクリックして処理Aはできないでしょうか。 何か方法はありませんか? Private Sub ComboBox1_Change() If ComboBox1.Value = "AAA" Then   ’処理Aへ ElseIf ComboBox1.Value = "BBB" Then   ’処理Bへ Else   ’処理Cへ End If End Sub

  • access コンボボックス初期表示について

    ACCESS VBA コンボボックス 初期表示について。質問します。m(__)m 教えてください。 VBAのフォームロードでコンボボックスに初期表示 させたいのですが、初期表示させいたい内容というのが、テーブルにある例えば列名AAA、列名BBBがあるとして  列名AAAの中で「3」を持っている、列名BBBの名前を初期表示させたいのです。 テーブル名 CCC AAA...BBB. ...1 ......あ.... ...2.......い.... ...3.......う.... ...4 ......え... このテーブル「CCC」でいえば3を指定して、「う」をフォームロードでコンボボックスに初期表示させたいのですがどうやればいいのでしょうか? いまの状態はコンボボックスに「あ・い・う・え」の順番で取っきていて「あ」が初期表示になっています。 コードの書き方がわかりません。教えてください テーブルCCCはフォームのプロパティのコントロールソースでつなげてあります。 ↑という風に質問させていただいて 回答していただいた内容は //何番目のデータを初期表示したいか決め、FORM LOAD時にその値をLISTINDEXにセットすれば良いのでは? //即ち //Private Sub Form_Load() //Combo1.ListIndex = 2 //End Sub //のようにプログラムを書けば良いと思います。但し、初期値は”0”なので注意が必要です。 としていただいたのですが、私の質問が説明が足りていなくて改めて質問させていただきます。 テーブルの中身はそのときそのときで入れ替わります。 テーブル名 CCC  AAA...BBB..........................................AAA..BBB ...1 ......あ....左の並びのときもあれば.......3.......か ...2.......い....右のように並びが変わる.......1.......け  ...3.......う......時があります。....................2.......さ ...4 ......え................................................4.......な このときに「3」を指定して、3に対応するBBBの行をフォームロードでコンボボックスに初期表示させたいのですがどうやればいいのでしょうか?

  • VBA コードを中断するには?

    下記コードにて、 aaaを実行し、Exit Subのところで実行そのものを終了させたいのですが、このままだとcccのコードが実行されてしまいます。 Exit Subのところをどう変更すればよいのでしょうか? Sub aaa() bbb ccc End Sub Sub bbb()  略  Exit Sub  ←ここをどう書けば良いですか?  略 End Sub Sub ccc()  略 End Sub

  • Accessの検索フォーム

    またまたAccessについての質問です。 検索フォームというのを作りました。 テーブルのデータから条件に合うものだけを抽出したいのです。 たとえば1つ目の検索フォーム[A]のテキストボックスに「AAA」を入力します。 そのあとBには「BBB」と入力します。 同じくCには「CCC」と入力します。 そして絞込みボタンを押したらAAAでBBBでCCCのものが抽出されます。 これはうまくいきました。 とりあえず、複数条件なので、わけもわからず「&」で結んでしまいました・・・。 ↓は絞込みボタンのクリック時です。↓ 困ったのは、すべて検索条件を指定しない場合です。 たとえば「AAA」で「CCC」のものを抽出したいとき、[A]のテキストボックスに「AAA」と入れ [C]のテキストボックスに「CCC」と入れます。 そして絞込みボタンをクリック。 するとBが未記入だからか、抽出されたのは真っ白でした・・・。 Option Compare Database Private Sub コマンド50_Click() Me.Filter = "契約='" & Me!テキスト51 & "'and A='" & Me!テキスト57 & "'" Me.FilterOn = True End Sub 組み合わせが自由になる検索フォームにするにはどうすればよいのでしょうか? 誰か助けてくださ~い!

  • アクセスvba 複数のイベントをまとめて記述したい

    アクセスvba 複数のイベントをまとめて記述したいです。 下記の様な同じ処理を複数のイベントにて実行する場合、どの様に記述すればよいでしょうか? ■下記例 「年」「月」「日」それぞれのテキストボックスにて更新されれば値を結合し「日付」にセットする --------------------------------------------------------- Private Sub wk年_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- Private Sub wk月_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- Private Sub wk日_AfterUpdate() Me.wk日付 = Me.wk年 & "/" & Me.wk月 & "/" & Me.wk日 End Sub --------------------------------------------------------- 宜しくお願い致します。

  • apacheの認証制限の記述について

    apacheについては超初心者です。 特定のIPにのみアクセスできるページを作成したいと思っています。 Order allow,deny Allow from all Allow from aaa.bbb.ccc aaa.bbb.dd1 aaa.bbb.dd2 aaa.bbb.dd3 というように連続したIPとそうでないIPが混在しています。 上記の場合、連続したIPをより簡略的に記述する方法 (たとえば、aaa.bbb.cc1~aaa.bbb.cc5) があれば教えて下さい。 もっといろいろ図書を読むなり、ネットで調べるなりすればよいのかもしれませんが、よろしくお願いします。

専門家に質問してみよう