ユーザーフォーム入門
セルの値をテキストボックスへ

Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説
公開日:2013年5月以前 最終更新日:2019-12-15

第8回.セルの値をテキストボックスへ


ユーザーフォーム入門として基礎から解説します。
フュームのテキストボックスにワークシートのセル値を表示します。
シートの実行ボタンを押下したら、アクティブセルの行の値をフォームに表示してみましょう。


Initializeイベントプロシージャーの追加

フォームのコードを表示しましょう。
右クリックします。

VBA マクロ ユーザーフォーム

フォーム上で右クリックでも良いです。
または、
「表示」→「コード」・・・ショートカットはF7です。

では、ここで、フォームのInitializeイベントを追加します。

VBA マクロ ユーザーフォーム

このUserFormをクリックすると、

Private Sub UserForm_Click()

End Sub

勝手にClickのイベントプロシージャーが追加されます。
目的のInitializeイベントではないですね。
右上のイベント選択でInitializeを選択します。

VBA マクロ ユーザーフォーム

これで、Initializeイベントが追加されます。

Private Sub UserForm_Initialize()

End Sub

UserForm_Clickは不要なので、削除しておきましょう。

InitializeイベントプロシージャーのVBAコード

では、このUserForm_Initializeを以下のように変更して下さい。

Private Sub UserForm_Initialize()
  Dim i As Long
  With Worksheets("顧客マスタ")
    i = ActiveCell.Row
    Me.txtコード.Text = .Cells(i, 1)
    Me.txt漢字名称.Text = .Cells(i, 2)
    Me.txtカナ名称.Text = .Cells(i, 3)
  End With
End Sub

これで、アクティブセルの行の内容がフォームに表示されたはずです。
前回作成した、

Private Sub btnOk_Click()
  Dim lastRow As Long
  With Worksheets("顧客マスタ")
    lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(lastRow, 1) = Me.txtコード.Text
    .Cells(lastRow, 2) = Me.txt漢字名称.Text
    .Cells(lastRow, 3) = Me.txtカナ名称.Text
  End With
  Unload Me
End Sub

この代入方向を逆にしただけですね。
ここまでが、ユーザーフォームの基本になります。
後は、いろいろなコントロールの使い方を覚えれば良いです。

しかし、ActiveCell.Rowをフォーム側で使うのは、どうもスマートではないです。
なんとなく、いやな感じがします。
こういActive○○というような特殊なオブジェクトはなるべく使わないようにVBAを作成したいところです。

各モジュール間でのデータ受け渡し方法

ここまでラベルとテキストボックスについて説明しましたが、コントロールはまだまだ沢山あります。
しかし、他のコントロールの説明に入る前に、
フォームモジュール、標準モジュール、シートモジュール、
それぞれの間でのデータの共有方法、データの受け渡し方法をやります。

書籍やネットでは、なかなか書いてない方法も含めて、かなり高度な使い方まで踏み込みます。
ここを覚えてしまえば、各コントロールの使い方は、それほど難しいものではありません。



同じテーマ「ユーザーフォーム入門」の記事

第5回.ラベルの追加
第6回.テキストボックス(TextBox)の追加
第7回.テキストボックス(TextBox)の値をセルへ
第8回.セルの値をテキストボックスへ
第9回.標準モジュールとフォーム間のデータ受け渡しⅠ
第10回.標準モジュールとフォーム間のデータ受け渡しⅡ
第11回.コンボボックス(ComboBox)の追加
第12回.リストボックス(ListBox)の追加
第13回.チェックボックス(CheckBox)の追加
第14回.オプションボタン(OptionButton)の追加
第15回.ここまでの整理と全VBA


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ