• ベストアンサー

ACCESSの変数で

超初心者です。お世話になります。 VBAの変数について教えて下さい。 例えば変数1~変数10まであるとします。 そこに氏名1~氏名20までを代入します。 そのとき、一つずつしていると、効率が悪いので、 For Next を使いたいと思います。 For  繰り返し = 1 to 10 で、変数の数字の部分を繰り返しで増やしていこうと思ったのですが、 "変数"と"繰り返し"のくっつけ方がどうも上手くできません。 どのようにしたらよいのでしょうか? あと、このように、Me.○○の部分も変数と変数をくっつけたいのですが、無謀でしょうか? わかりにくい説明で申し訳ありませんが、よろしくお願い致します。 

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

  • ベストアンサー
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.3

配列ですね。具体的にはこんな感じでコーディングします。 ****************************************************** Option Base 1  ' 既定の配列のインデックス番号を 1 に設定します。 Function aaaa() Dim namae(20) As String  '名前を配列変数に宣言する Dim I As Integer      'ループカウンタ For I = 1 To 20 namae(I) = I & "さん"  'とりあえず1.2.3....に「さん」を付けて名前という事にしときましょう Next For I = 1 To 20 Debug.Print namae(I)  'デバックウインドに結果を表示することにしときます。CTRL+Gで確認できます。 Next End Function ****************************************************** ちなみにMe.○○についてはコントロール配列を使用するのですが、VBでは出来ますが、Accessでは使えなかったように思います。

toroon
質問者

お礼

とてもわかりやすい説明で、助かりました。 ありがとうございました。うまくできました(^o^) 何しろ、超初心者なもので(^^ゞ これからもよろしくお願いします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

>例えば変数1~変数10まであるとします。 そこに氏名1~氏名20(10の誤り?)までを代入します。 --->普通はこうはしません。 多分言いたいとは Sub test01() Name = Array("山田", "山川", "大田", "岸田") For i = 0 To 3 MsgBox Name(i) Next i End Sub 上記がヒントになるのではと推測します。 Accessのテーブルに既に名前フィールドがあるのなら(模式コードは) (オープン処理) For i=1 to 10 (レコードを1つ読む) name(i)=テーブル名!名前 (レコード)MoveNext next i

toroon
質問者

お礼

以前もお世話になりましたね。ありがとうございます。 ACCESSを始めたばかりで分からない事ばっかりです(^^ゞ 今後ともよろしくお願いします。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 変数の場合は、No.1の人が言うように配列を使います。 Me.○○ というのはフォーム上のコントロールのことですね。 フォーム上のコントロールは、 Me.Controls(コントロール名) という風に指定出来ます。 ループの変数iを付けるなら、 Me.Controls("氏名" & i) という感じになります。

toroon
質問者

お礼

いつも、わかりやすい説明をありがとうございますm(__)m コントロール、指定できました。 ありがとうございました。 これからもよろしくお願いします(^^ゞ

  • yoshisuke
  • ベストアンサー率65% (19/29)
回答No.1

こういった時、私は「配列」を良く使いますよ。 詳しくはHELPを見てみてください。

toroon
質問者

お礼

配列ですね。 1つ勉強になりました。 ありがとうございました。

関連するQ&A

  • エクセルVBA:変数の疑問?

    vba初心者です。 ちょっと疑問に思ったので質問します。 変数1 = XXXXX 変数2 = XXXXX 変数3 = XXXXX 変数4 = XXXXX 変数5 = XXXXX For i = 1 To 5 XXXX.YXXXX("変数" & i).xxxxx Next i 以上の様に"変数名 + 数字"の様な型を定義した場合 この、数字部分を生かしてループ処理などは可能なのでしょうか?

  • VBA 変数を使うべき?

    VBA 変数を使うべき? VBAを独学で勉強中のものです。 エクセルVBAでデータが入っている行数分処理を行いたい場合などに ------------------------------------------------ lastRow = cells(rows.count,1).end(xlup).row for i = 1 to lastRow ・・・ next i ------------------------------------------------ などと最終行を変数に代入して使う場合と ------------------------------------------------ for i = 1 to cells(rows.count,1).end(xlup).row ・・・ next i ------------------------------------------------ などと直接for文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか?

  • ChexBox1等の「1」を変数にできますか教えて下さい

    こんにちは VBA初心者で目下勉強中のものです さて、今作っているプログラム中で、ユーザーフォームのチェックボックス にチェックが入っているものをカウントするのに、FOR~NEXTで たとえばCheckBox1~ChexBox20まで回したいのですが、CheckBoxの後についている数字「1」等を変数「i」にすることはできるのでしょうか? どなたかご指導いただけないでしょうか 気持ちとしては、以下のようにしてみたいのですがエラーがでました For i = 1 to 20 CheckBox(i).Value = False Then Exit For .......... Next i とんちんかんな質問かもしれませんが、よろしくおねがいします

  • Excel マクロ:変数を複数使う場合

    マクロ初心者です。 For文で、変数を2つ定義し、それぞれが1つずつ増えてくれるような マクロを組みたいのですが、うまくいきません。 例えばA列の並んだ数字を、B列に一個とばしで入力するとして・・・ 例) Dim i As Integer Dim j As Integer For j = 2 To 10 Step 2 For i = 1 To 9 Cells(j, 2).Value = Cells(i, 1).Value Next i, j ではだめですよね。iが1つ増える時に、jも1つ増える、 というようにVBAを組むことが可能なのでしょうか? ど素人な質問ですみませんが、教えてください。

  • VBAの変数 超入門

    上司からVBAの宿題をだされました。 変数とFOR nextを使って 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 と出るようにしろ、とただこれだけのVBA。。。 基礎なんでしょうけど、いまいち理解しきれていません。 よろしくお願いします。

  • access vbaで、変数を含んだプロシージャ

    access vbaで、変数を含んだプロシージャを実行したい。 【やりたい事】 下記の矢印の部分で「msg1」「msg2」「msg3」を実行したい。 Public Sub test() For i = 1 To 3 msg & i ←ここを、どのように記述すればいいのでしょうか? Next End Sub Public Sub msg1() MsgBox "ok1" End Sub Public Sub msg2() MsgBox "ok2" End Sub PublicSub msg3() MsgBox "ok3" End Sub よろしくお願いします。

  • EXCEL2010 VBA 変数への代入

    EXCEL2010のVBAを使用しています。 処理で繰り返しの処理があります。 繰り返しのたびに変数Aに変数A+セルの番地(A1等)を代入していきたいのですがうまくいきませんどうすればよいでしょうか? 説明が下手ですみません。 ようするに変数の中の値を上書きせずに、現在の値を後ろに追加したいということです。 (例) 変数Bは最初は「1」 繰り返し1回目  変数A =変数A&Cells(1,変数B)   ’変数Bは繰り返しのたびに1ずつ増えます 繰り返し2回目  変数A =変数A&Cells(1,変数B) 一回目は変数AにはA1が入る 2回目の処理時にはA1B1というふうになり、上書きされず追加で代入される。 というようなイメージです。

  • オブジェクト名に変数は?

    List1 List2といったオブジェクト名についている「1」とか「2」と言った数字を変数に出来ないのでしょうか? List1.Clear List2.Clear と一つずつ記述するのでなく、たとえば for I=0 to 2 ListI.Clear next i みたいにならないのでしょうか?VB6使ってます ご教授お願いします。

  • ASPで、変数名に、変数を入れられますか

    ASPで、変数名に、変数を入れられますか 教えてください だめな場合 別の方法をお願いします。 For i = 1 To 10 Step 1 ("rc_" & i)= i Next

  • WordのVBAにてコントロール名に変数を使いたい

    Wordでコントロールツールボックスのコントロールを複数個並べて、コントロール名を変数で切り替えたいと思っています。 例えば、テキストボックスを3つ並べた時、以下のように「i」を変数にしてFor文でまわしたいです。 【例】 TextBox1 TextBox2 TextBox3  ↓ For i=1 to 3 TextBox「i」= ・・・(A) Next i Excelであれば、(A)の部分は、以下のようにOLEObjectsを使えば実現できますが、Wordではコンパイルエラーが出てしまいます。 Dim strName As String For i=1 to 3 strName = "TextBox" & i Me.OLEObjects(strName).Object・・・ next i どのようにすればよいのか、ご教授いただけると幸いです。 お願いします。

専門家に質問してみよう