• ベストアンサー

フィールド名をループの添え字として使いたい

当方、AccessのVBAなんですがVBでも同じと思い質問します。 フォームに3つのフィールドがあって、それぞれ 1,2,3というフィールド名がついてます。 これをループの添え字に使いたいと思います。つまり For i = 1 To 3 Hairetsu(i) = me!???? Next としたいのですが、??部分をどう書いたらいいか分かりません。 Me(i),Me[i]などを試してみましたがダメでした。 どう書けばいいでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

数字でフィールド名つけてるから上手く動いてないのかな? 念のために、CStr()でiを文字列にしてみてください。 Me(CStr(i))

reachippatu
質問者

お礼

ご回答ありがとうございます。 うまくいきました!! ばっちりです!! 感謝いたします!

関連するQ&A

  • ループ中にフォームを閉じると、様々な例外が出てしまう・・

    お世話になっております。 VB2005を勉強しております。現在、フォームが一枚だけのシンプルなプログラムを作っています。For~Nextのループ内にApplication.DoEvents()と記述して他の操作を受けられるようにしておりますが、その状態でループ中にフォームを閉じると例外が出てしまいます。それにフォームは消えまても、デバッグ中断ボタンを押すまでプログラム自体はは起動したままです。強制定期にループを破棄する方法をご教授ください。または、ループ中でも正常にプログラムを閉じる方法でも結構です。 ループ内の処理によってエラー内容は違いますが、現在はAccess.Violation.Exceptionという例外がでます。下記のように、なんの処理もしないループを作ってみましたが、やはりこれでも違う例外が出ました。 ・その1 For i As Integer = 0 To 1000000000   Application.DoEvents() Next ・その2 For i As Integer = 0 To 1000000000   Application.DoEvents()   System.Threading.Thread.Sleep(100) Next ちなみに、フォームのClosingイベントでフラグを立てて、 For i As Integer = 0 To maxInt   If flag_closing = True Then     Exit For   End If   Application.DoEvents() Next などとやってみましたが効果がありませんでした。 よろしくお願いいたします。

  • MDBの大量のフィールドへループでinsert

    お世話になっております。 Visual Studio2013で、テキストボックスに入力された値をmdbへ挿入しようと思っています。 フォーム上にTextBox1~ TextBox100があり、それぞれの値を1つずつフィールド へ挿入したいのですが、INSERT文へ100個もフィールド名を書かないように ループさせる方法はあるのでしょうか? For i = 1 to 100 sSql = "INSERT INTO table1(???) VALUES('" & Me.Controls("TextBox" & i).Text & "');" のようなイメージです・・・。 初心者の質問で申し訳ありませんが、よろしくお願いします。

  • Forループの制御について

    VB 2005,Framework2.0を使用しています。 For文を使ったループについてお尋ねしたいことがあります。 For i As Integer = 0 To 10     ’処理 Next i とあったとします。 そうするとループ変数iが0から10になるまで連続してループを行うのですが、これをある条件の時に現在のループ変数から一つ飛ばして次のループからまた処理を行いたい場合どのようにすれば良いのでしょうか? 例えば0~10回中に、現在5回目で特定の条件が一致したときその次の6回目のループは飛ばして7回目のループから再開したいです。 ちなみにこの様に書いても0から10回必ずループされてしまいました。 Dim TEST(10) As Integer TEST(5) = 1 For i As Integer = 0 To 10 If TEST(i) = 1 Then i = i + 1 End If Next i

  • アクセス2007 フォームでフィルタ抽出した全フィールドの書き換え

    アクセス2007 フォームでフィルタ抽出した全フィールドの書き換え アクセスメニュー(リボン?)にある「フィルタの実行」で抽出されたデータがあるフォームです。 フィールドの値を一気に変更するスベを知らなく現在下記のようにしています。 For d = 1 To Me.Recordset.RecordCount    DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, d    Me![目的のフィールド] = ”テスト” Next これでもできるのですが、いまいち納得しません。 もっと、スマートな方法はないですか? 抽出にはアクセスメニュー(リボン?)を使っています。

  • フィールド名に番号を付けてループする処理

    いつもお世話になっております。 ソフトは、VB.Netです。 従来ですとIndex番号にカウントした値をいけば問題なかったと思われるのですが、 VB.NetにはIndexが無いため下のようにしましたが、 クリアできません(クリアどころかエラーで落ちます。) With FormName For i = 1 To 35 .Controls.Item("Tx_Day_" + i).Text = "" Next End With どなたかごご存知の方よろしくお願いいたします。

  • PLSQLでフィールド名の参照について

    PLSQLでフィールド名で、例えば フィールド1,フィールド2…フィールド5 とし、下記の例のように添え字でフィールドを それぞれ指定したいのですが、可能でしょうか? 出来る場合、具体的にどのようにすればいいのでしょうか? FOR i IN 1..5;  sum := sum + CALCREC01("フィールド" || i);  ↑こんな感じの事がしたい。。。 END LOOP

  • VBAでForループを抜けるためには?

    i = 1 To 1000 Step 1 Next というForループを作って、 ある条件A < 0 に達すると、その時点でiが1000に達していなくても Forループを終了したい場合、どのように記述すれば良いでしょうか?

  • 変数をループで扱うには??

    C言語を最近勉強し始めたばっかりの初心者ですが、教えてください。 for文を用いたループ処理を使って、以下のことをやりたい場合、打開策があれば教えてください。 理想としては、(下手な書き方であることは100も承知なのですが・・) int i1,i2,i3,・・・・,; (添え字のような雰囲気の)整数変数と、カウント用の変数(例えば int count;)を用意して、 for (count = 1 ;(略);count++)などとして、forのブロック内に『気持ちとしては』、 int(count) = (略) としたいのです。何というか、添え字(正確に言えば全く添え字ではないのですが)とループを同時に扱いたいのです。 この、「添え字のように扱う」という方法・技術があれば、教えてください。お願いします。 「そんな書きかたをせずにこうすれば・・・」っていうのはわかっているんですが、気分的にもスッキリしたいので、回答のほど、お願いします。

  • プロパティをループで指定する

    環境: WindowsXP VisualStudio2008 Professional 言語: VB.NET あるクラスのプロパティへ Public Property Prop1 As Integer/Prop2/Prop3/・・・・と設定し、ゲットやセットするのにループしていれる方法はあるのでしょうか。 例えば・・・ For I As Integer = 1 To 40   Console.WriteLine(Prop & I) Next 若しくは For Each Property As Property型??(Object??) In Properties??(プロパティコレクション??)   Console.WriteLine(Property.Value??) Next という感じです。 フォームなどのコントロールで、複数のコントロールへ同じ内容を入れ込むときに使ったことはあるのですが、プロパティでも同じことができるのかなと思い質問してみました。

  • 1バイトごとに抽出する

    VB5でデータを添え字を使って1バイトごとに抽出するプログラムを書きました。(For i = 1 To 128 Get #1,,Bwk(i) Next i) ←このプログラムをVBAで使いたいのですが、VB5と同じでいいですか?あと、これで1バイトごとに抽出できているでしょうか?

専門家に質問してみよう