Access・アクセス・VBA・コントロール名を変数を使って指定する方法!ループ処理のコードが簡略化できる!

スポンサーリンク
050-VBA

へっぽこヘタレシステム管理人の管理者です。

さて、アクセスで簡易なソフトウエア的なもの?を作っていると・・・

一つのコマンドボタンで更新クエリやデータの追加クエリを何度も実行しなければいけない場合があります。

1~2個ならそのまま順番に記述すれば良いのですが・・・

これが何個もとなると・・・

いちいち記述するのが面倒くさくて、なんとか・・・

変数を使ってループ処理できないか悩んでいたのですが・・・

ようやくその方法が分かりましたので忘備録として掲載しておきます。

実験してみたことは次のとおりです。

やりたいことは単純です・・・

チェックボックスには・・・

  • check1
  • check2
  • check3
  • check4
  • check5

という名前を付けてあります。

これに対応して、チェックボックスが押されていたら・・・

対応したクエリを実行するというものです。

  • query1
  • query2
  • query3
  • query4
  • query5

通常であれば・・・

if me.check1 = -1 then
 docme.openquery "query1"
else
endif

if me.check2 = -1 then
 docme.openquery "query2"
else
endif

if me.check3 = -1 then
 docme.openquery "query3"
else
endif

以下続く・・・

とするのですが・・・

順番に実行するものが決まっているのであれば・・・

変数でコントロールを指定すれば、コードが簡略化できます。

実際に記述したコードは次のとおりです。

Private Sub コマンド0_Click()

Dim A As Integer
Dim qname As String
Dim bname As String

A = 1


For A = 1 To 5

    bname = "check" & A

    If Me.Controls(bname) = -1 Then
        
        qname = "query" & A
        
        DoCmd.OpenQuery qname, acNormal
        
    Else
        End If
        
Next

End Sub

クエリの指定は・・・

通常は・・・

【docmd.openquery “クエリ名”】

と記述しますが・・・・

変数を使う場合は・・・

スポンサーリンク

【docmd.openquery 変数名】

で良いようです。ダブルクオーテーションで囲まなくて良いだけのようです。

しかし・・・

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

チェックボックスの指定は・・・

同じ方法ではダメでした。

通常だったら・・・

【Me.コントロール名】

とするので 、同じように・・・

【Me.変数名】

としたのですが・・・エラーで止まります。

調べた結果・・・

【Me.Controls(変数名)】

でいけました・・・

知らない事が多いとはいえ、まだまだ勉強不足を通過したところです。

実際の動作は次の動画のとおりとなります。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました