VB6.0でオブジェクト名を変数で参照する方法について

このQ&Aのポイント
  • VB初心者です。配列の場合 Dim str(10) as string と宣言し、i番目のデータを取り出したいときには、str(i) と記述すると思います。そこで質問ですが、例えばCommandが1~10まであるとします。オブジェクト名はそのまま(Command1, Command2)で、それぞれのCaptionに違ったデータが入っています。ある文字列があり、For文を使い、CommandのCaptionとその文字列が一致したときに文字列を出力するという処理を行いたいとき、どのようにCommand1~10のCaptionを回せばいいのでしょうか?
  • VB6.0の環境で、オブジェクト名を変数で参照する方法についてお聞きします。配列の場合は、i番目のデータを取り出すためには、str(i)というように記述します。そこで質問なのですが、例えばCommandというオブジェクトが10個あり、それぞれのCaptionには異なるデータが入っています。ある文字列とCommandのCaptionを比較して一致する場合に文字列を出力するという処理を行いたいのですが、どのようにCommand1~10のCaptionを順番に回せば良いのでしょうか?
  • VB6.0でオブジェクト名を変数で参照する方法について教えてください。VB初心者ですが、配列の場合はstr(i)というようにしてi番目のデータを取り出すことができます。しかし、今回質問したいのはCommandというオブジェクトが10個あり、それぞれのCaptionには異なるデータが格納されています。文字列とCommandのCaptionを比較し、一致する場合に文字列を出力する処理を書きたいのですが、どのようにCommand1~10のCaptionを順番に回せばよいのでしょうか?
回答を見る
  • ベストアンサー

オブジェクト名を変数で参照できますか

VB初心者です。 配列の場合 Dim str(10) as string と宣言し、i番目のデータを取り出したいときには、str(i) と記述すると思います。 そこで質問ですが、例えばCommandが1~10まであるとします。 オブジェクト名はそのまま(Command1, Command2)で、それぞれのCaptionに違ったデータが入っています。 (例えば、Command1のCaptionには'A' Command2のCaptionには'B'といった感じに) ある文字列があり、For文を使い、CommandのCaptionとその文字列が一致したときに文字列を出力するという処理を行いたいとき、どのように Command1~10のCaptionを回せばいいのでしょうか? コードを記述しておきます。 Dim str(10) as String Dim i as Integer Dim j as Integer for i = 0 to 10 for j = 0 to 10 ☆☆ if Command(i).Caption = str(j) then print.str(j) end if next next ☆☆のところです。 可能であれば回答をお待ちしております。 環境は windows XP, VB6.0 です。

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> オブジェクト名はそのまま(Command1, Command2)で、 > VB6.0 です。 VB6なら、コントロール配列(Command1(1)~Command1(10))に変更したほうが楽だと思いますけど・・・ そのままなら、Controlsコレクションを使って、 > if Me.Controls("Command" & Format(i)).Caption = str(j) then とか・・・

HAtSu569
質問者

お礼

回答ありがとうございます。 コントロール配列ですね。検索してみた結果「こんな便利なものがあったのか」と目から鱗の思いです。 早速、実装してみたいと思います。 ありがとうございました。

関連するQ&A

  • オブジェクト名

    複数のWinsockを使用したいです。 オブジェクト名Winsock1~Winsock6があるとします。 例えば Dim i As Integer Dim strWinsock As String For i = 1 to 6 strWinsock = Winsock & i //処理 Next 上記のようなループで文字列strWinsockを、オブジェクト名として使用することはできないのでしょうか? また、もし他の方法があるようでしたら、教えて下さい。

  • 変数を動的に作るには?

    変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3"      ・      ・      ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。

  • vb6のstringについて256文字以上連結

    Dim str as String Dim intloop as Integer For intloop=0 TO 19 str=str+"work joint“+intloop Next intloop 20個分の文字列が連結されません。 どのようにすればよろしいでしょうか?

  • エクセルVBAでの変数

    いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 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でSplitエラーです

    環境:Excel2002です   Cells(1, 1)に(1)~(10),(13),(20)~(28)のような値があります   Cells(1, 1)の値は別のプロシージャ求めていてその都度変わります   Cells(j, 4)をスタート位置にして   Cells(j, 4)に(1)~(10)   Cells(j+1, 4)に(13)   Cells(j+2, 4)に(20)~(28)を表示したいので   以下のプロシージャにしました Dim Str As String Str = ActiveSheet.Cells(1, 1).Value Dim i As Integer Dim j As Integer '◆カンマで区切った文字列をD列に格納 Dim tmp As Variant tmp = Split(Str, ",") j = 1 For i = 0 To UBound(tmp) ActiveSheet.Cells(j, 4) = tmp(i) j = j + 1 Next i   あるブックでは正常に動作するのですが   別のブックでは以下のエラーメッセージがでて動作しません   【モジュールではなく、変数またはプロシージャを指定してください】   何が原因なのでしょうか?ご教示願います   Splitを使わない別の方法があればそれでも結構です   とにかく困っています

  • 半角カタカナのみ全角にするには

    http://bekkoame.okwave.jp/qa8426331.html を参考にvbaコードを作っています。 "あああイイイ"(「イイイ」のみ半角カタカナ) を "あああイイイ" にしたいのですが、 Sub Macro01() Dim str置換前 As String '置換前の文字列 Dim str置換後 As String '置換後の文字列 Dim i As Integer str置換前 = "あああイイイ" str置換後 = str置換前 For i = 31850 To 31936 str置換後 = Replace(str置換後, StrConv(Chr(-i), vbNarrow), Chr(-i)) Next i MsgBox str置換前 MsgBox str置換後 End Sub を実行すると、 「あああ」が全角カタカナになり、「アアアイイイ」になってしまいます。 For i = 31850 To 31936 の部分に原因があるのかな、とは思いますが、 For i = 31850 To 31936の意味がよくわからないままコピペで使ってしまいました。 多分文字コードの数値だと思うのですが、どう変更すれば、ひらがなは除外されますか? よろしくお願いします。

  • フォームオブジェクトのコントロール

    あるプログラムを解析していたところ、引数に応じて違うフォームのラベルに文字列を代入し・表示するというVB6で書かれた下のコードがありました。 これをVB2008で置き換えてみようと思ったのですが、 ***クラス 'System.Windows.Forms.Form' には既定のプロパティがないため、インデックス処理を実行できません。*** というエラーが帰ってきてしまいます。どのように書き換えればよろしいのでしょうか?? [VB6] Public Sub MsgBoxE(BType As Integer, MsgH As String, MsgM As String, MsgL As String) Dim DForm As Form Set DForm = Nothing 'ダイアログ選択 Select Case BType Case 0 Set DForm = DialogC Case 1 Set DForm = DialogB Case 2 Set DForm = DialogC End Select On Error Resume Next 'メッセージセット DForm!Label1.Caption = MsgH DForm!Label2.Caption = MsgM DForm!Label3.Caption = MsgL DForm.Show

  • VB.NETでExcelの数式バーの処理をさせたい

    Excelのセルにいろいろな数式が入っていて、 この数式を書き出したテキストファイルを読み込ませて、 VB.NETで処理をしたいのですが、 VB.NETで、Excelの文字列関数を含んだ式を処理するには どのように記述すればよいでしょうか。 単なる計算式であれば  Dim xlApp As New Excel.Application  Dim str1 As String  Dim x As Integer  a = "3600 / 60 + 5000"  x = xlApp.Evaluate(a) でできるのですが文字列だとうまくいきません。 例えば、ExcelのシートのA1セルを選択して 数式バーに =MID("ABCDE",2,3) と入力すると その結果のBCDがA1セルに得られますが VB.NETで、 =MID("ABCDE",2,3) から BCD を得るにはどのようにすればよいでしょうか。 なお、=MID("ABCDE",2,3) の式は一例であって、 以下のように、この式をVB.NETで記述する 仕方を知りたいのではありません。  Dim str1, str2 As String  str1 = "ABCDE"  str2 = str1.Substring(2, 3) よろしくお願いします。 (VisualStudio2010 , Excel2003 , WindowsXP SP3)

  • 変数を文字列として扱う方法

    VB初心者なのですが、 変数を、その変数のまま文字列で扱う方法がないかと悩んでいます。具体的に言うと、 たとえば、 Dim Bef(i,j) As String と宣言しておいて、 Bef(1,1)に、SCATTERBRAiN11 Bef(1,2)に、SCATTERBRAiN12 Bef(1,3)に、SCATTERBRAiN13 …… Bef(i,j)に、SCATTERBRAiNij という「文字列」を入れたいのです。 (最後の2文字i,jが、そのときの変数i,jの値。) これをFor構文を使って、 Bef(i,j)="SCATTERBRAiN" + i + j と書いたら、エラーになってしまいました。 iやjを、その変数に入っている数字の文字列として扱うには、どうすればいいのでしょうか。 よろしくお願いします。