- 締切済み
エクセルVBAラベルの変数?
エクセル2000VBAにて下記のように作成しました。 With ActiveSheet For i = 4 To 200 If Label1.Caption = .Cells(i, 1) Then For h = 4 To 34 If Label25.Caption = .Cells(2, h) Then For idx = i To 200 If .Cells(idx, 3) = Label21.Caption Then Label6.Caption = .Cells(idx, h) Label7.Caption = .Cells(idx + 2, h) GoTo ラベル2 End If Next idx End If Next h End If Next i ラベル2: For i = 4 To 200 If Label2.Caption = .Cells(i, 1) Then For h = 4 To 34 If Label25.Caption = .Cells(2, h) Then For idx = i To 200 If .Cells(idx, 3) = Label21.Caption Then Label8.Caption = .Cells(idx, h) Label9.Caption = .Cells(idx + 2, h) GoTo ラベル3 End If Next idx End If Next h End If Next i ラベル3: ・・・ End With Label1~5まで同じ処理を行うため 1~5まで変数を使用して簡単にしたいのですが Label(変数)の書き込み方がわかりません? 検索を使用しましたが検索項目が悪いのか なかなか解決しません。 何方か教えていただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
シート上にある場合 Dim i As Long For i = 1 To 10 With ActiveSheet.OLEObjects("Label" & i) MsgBox .Name & vbCrLf & .Object.Caption End With Next i で通りました。
- fujillin
- ベストアンサー率61% (1594/2576)
例えば(Label1、Label6、Label7)、(Label2、Label8、Label9)・・・をセットにして同じ処理を繰り返したいというようなことですよね? 一回分の処理をサブルーチンかしておいて、↑のセットを引数として、必要な回数だけ呼び出してあげればよいのでは? (他にも処理が違うところがあれば、その制御コードなども追加して考えてください) 引数として渡すのは、直接Objectでもよいし、index番号でもよいと思います。 シート上のLabelは ActiveSheet.OLEObjects(index) または ActiveSheet.Shapes(index) などのようにオブジェクト名以外に、index番号でも指定することが可能なのでこれを利用することもできます。 ただし、index番号とラベル名の(仮にふられた)番号とは一致するとは限りませんので、事前に確認しておく必要があります。