今、ユーザフォームに20個のラベルがあります。それぞれのラベルは、条件によりラベルの表示内容が変更します。そこで、ラベルの表示変更が必要なときにすぐに変更できるようにしたいと考えています。しかし、例えば以下のようなコードを作成するとエラーになり困っています。
Label(i)で、iの番号によりラベルが呼び出されないだろうかと自分なりに作りましたがダメでした。以下のようなループ文中で特定のラベルを呼び出し処理することは不可能でしょうか?
やはり、UserForm1.Label3などのように番号をきちんと書かないとダメでしょうか?本当は、ラベルが82個ありその一つ一つにコードを割り当てるのが大変です。また、きれいなコードで書きたいと思うからです。宜しければ、ご教授願います。
--------------------------------------------
Sub セルの値をラベル表示する()
For i = 1 To 20
With UserForm1.Label(i)
.Caption = Cells(1, i)
End With
Next i
End Sub
No.1ベストアンサー
- 回答日時:
Excel VBAではコントロール配列はサポートされていませんが、ラベルの名前をLabel1, Label2,・・・ Label20とすると、以下のコードでほぼ同じことを実現できます。
Sub セルの値をラベル表示する()
For i = 1 To 20
With UserForm1.Controls("Label" & i)
.Caption = Cells(1, i)
End With
Next i
End Sub
No.2
- 回答日時:
ははは、そりゃ大変だ。
ところでVBAにはコントロール配列の機能はなさそうだ。Indexプロパティが無い。
では方法は無いかと言うと、FormオブジェクトのプロパティControlsは、そのフォームが持っているコントールのコレクションオブジェクトを返す。で、コレクションの中で名前を指定すれば該当するNameプロパティが設定されているオブジェクトを返す。
ようはこういう事だ。
Me.Controls("Label3").Caption = "ラベルだよ~ん"
コントール名が「文字列」として操作できるのなら、後は・・・・な? もう分かったよな。
有難う御座います。深夜の質問ということと、自分なりに調べても該当するものがなかったのでほぼ諦めて、Label1~82まで作り、エラーの除去をしていました。まさか、Controlsがそのような意味だとは知りませんでした。50行近い、Select Case が、わずか5行程度のFor文になり大変感謝しております。有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) VB DataGridViewについて 3 2022/06/08 17:20
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseのデバッグ中に変数の値...
-
VBAのコンボボックスの年月表示...
-
Windowsのカーソルを変更
-
ACCESSのVisibleについて
-
vbaを使ってグーグル検索をしたい
-
Notepad++のコメントの色を変え...
-
パソコンの文字の色の変え方
-
ExcelVBA EnableプロパティがF...
-
ステータスバーコントロールの...
-
ラベルの文字列の長さが変わっ...
-
0での割り算
-
Excel VBA ユーザーフォーム内...
-
Vba テキストボックス文字を右...
-
VisualStudioのプロパティが表...
-
ウインドウを常に前に、常にア...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
ExcelVBA Range クラスの Page...
-
ADODB.Streamを使用してUTF-8を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ウォッチ式の文字数制限について
-
eclipseのデバッグ中に変数の値...
-
Vba テキストボックス文字を右...
-
VisualStudioのプロパティが表...
-
ExcelVBA EnableプロパティがF...
-
ラベルの文字列の長さが変わっ...
-
ラベルを表示したり非表示にし...
-
ラベル内の文字(Caption)を縦...
-
VB.NETでラベルの大きさってど...
-
C# DataGridView特定セルの入力...
-
Excel VBA ユーザーフォーム内...
-
ラベルのスクロール(VB)
-
エクセル 画像のプロパティで縦...
-
スプレッドシートの列名変更の...
-
ACCESSのラベル内データに下線...
-
Notepad++のコメントの色を変え...
-
ACCESSのVisibleについて
-
VBAでMultiPageの色の設定方法は?
-
MATLABのグラフで軸目盛りのフ...
-
0での割り算
おすすめ情報