ユーザーフォームを開く時にラベルの名前を書き換えて表示する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

ユーザーフォームに配置したラベル名「Label1」が、フォーム表示と同時に名前や日付などに自動的に表示を変えることができるのをご存知ですか?

方法は簡単で指定したセルの値を読み込ませてから表示させるように、エクセルのVBAコードを書き込むだけなのでご紹介します。

ユーザーフォーム(UserForm)

オリジナルの入力フォームが作れるユーザーフォームの基本表示方法からおさらいです。

ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを配置することを前提に書きます。

ユーザーフォームを表示する

VBAコード

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を表示する
  3. マクロ記録終了

ユーザーフォームを閉じる

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. マクロ記録終了

ユーザーフォームを閉じて別のユーザーフォームを表示する

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. ユーザーフォーム2を表示する
  4. マクロ記録終了

ここまでが基本的なユーザーフォームほ表示・閉じる方法です。

次にユーザーフォームを開く時に、配置されているラベル名をセルの値から読み込んで表示させるようにしましょう。

ユーザーフォームを開く時にラベル名を書き換えて表示

VBAコードは、上から順番にプログラムを実行しますので、UserForm2.Showの前に読み込むVBAコードを書かなくてはいけません。

ここでは、ユーザーフォーム1に配置されたコマンドボタン1を押すと、セルA1の値を読み込んでラベル1を書き換えてからユーザーフォーム2を表示する方法です。

VBAコード

Private Sub CommandButton1_Click()
Unload Me
UserForm2.Label1.Caption = Range(“A1”).Value
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のユーザーフォームを閉じる(UserForm1を省略してMe)
  3. ユーザーフォーム2に配置したラベル1の名前をセルA1の値とする
  4. ユーザーフォーム2を表示する
  5. マクロ記録終了

となり、これでユーザーフォーム2が表示されるとラベル名がセルA1の値に書き換えられて表示されます。

ところが、実際にはユーザーフォームに配置されたラベルは1個って事ありませんので、並べて複数書き換えることも可能です。

ラベル書き換えが複数

ここではラベル3つを書き換える方法ですが、これぐらいの数ならばWithステートメントでまとめて書いても平気ですよね。

VBAコード

Private Sub CommandButton1_Click()
Unload Me
With UserForm2
.Label1.Caption = Range(“A1”).Value
.Label2.Caption = Range(“A2”).Value
.Label3.Caption = Range(“A3”).Value
End With
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のユーザーフォームを閉じる
  3. ユーザーフォーム2の下記操作をする
  4. ラベル1の名前をセルA1の値とする
  5. ラベル2の名前をセルA2の値とする
  6. ラベル3の名前をセルA3の値とする
  7. Withステートメント
  8. ユーザーフォーム2を表示する
  9. マクロ記録終了

ただ、このラベルの数が30個ぐらいあったら、かなり面倒なので繰り返し処理を使うと楽ですよ。

VBAコード

Private Sub CommandButton1_Click()
Unload Me
For i = 1 To 30
With UserForm2.Controls(“Label” & i)
.Caption = Cells(i, 1).Value
End With
Next i
UserForm2.Show
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のユーザーフォームを閉じる
  3. 繰り返し処理の変数「i」を宣言し、変数は1~30とする
  4. ユーザーフォーム2に配置したラベル「i」の
  5. 文字をセルi行目の1列目(A列)の値とする
  6. Withステートメント終了
  7. 指定回数、繰り返し処理をする
  8. ユーザーフォーム2を表示する
  9. マクロ記録終了

このようにすると、書き換えたいラベルが複数あっても簡単にVBAコードを書くことができてしまいますので、ぜひマスターしてくださいね。

波乗りアヒル

ラベルは本来はテキストボックスなどの用途を知らせるだけなのですが、使い方次第で意外と便利なアイテムになりますよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。