
今、ユーザフォームに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も見ています
-
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
Excel、VBAのユーザーフォームのラベルで変数を…
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
6
VBA ユーザーフォームラベルキャプション名変換
Visual Basic(VBA)
-
7
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
11
エクセルユーザーフォームのチェックボックスのCaptionにセルの値を入れたい。
Excel(エクセル)
-
12
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
13
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
14
ExcelVBA ユーザーフォーム
Excel(エクセル)
-
15
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラベルの文字列の長さが変わっ...
-
ウォッチ式の文字数制限について
-
VBSのMsgBoxで文字に色をつけたい
-
Vba テキストボックス文字を右...
-
三菱タッチパネル小数点以下表...
-
Win32 API エディットボックス...
-
文字の色を変えたい
-
(Excel 2003) マクロでワー...
-
VBA:ユーザフォームのラベルの...
-
プログラムについて
-
MATLABのグラフで軸目盛りのフ...
-
VisualStudioのプロパティが表...
-
スプレッドシートの列名変更の...
-
ラベル内の文字(Caption)を縦...
-
worksheetFunctionクラスのVloo...
-
VBA(エクセル)で自動的にボタン...
-
VBA シートのボタン名を変更し...
-
パソコンへの「Dropbox...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ウォッチ式の文字数制限について
-
eclipseのデバッグ中に変数の値...
-
ラベルの文字列の長さが変わっ...
-
Vba テキストボックス文字を右...
-
ExcelVBA EnableプロパティがF...
-
VisualStudioのプロパティが表...
-
ラベルを表示したり非表示にし...
-
ラベルのスクロール(VB)
-
VB.NETでラベルの大きさってど...
-
Notepad++のコメントの色を変え...
-
Excel VBA ユーザーフォーム内...
-
三菱タッチパネル小数点以下表...
-
ラベル内の文字(Caption)を縦...
-
MATLABのグラフで軸目盛りのフ...
-
VBA:ユーザフォームのラベルの...
-
VB2005 TextBoxで高さを変更し...
-
C#初心者です。チェックボック...
-
スプレッドシートの列名変更の...
-
ACCESSのラベル内データに下線...
-
C# DataGridView特定セルの入力...
おすすめ情報