訪問して頂きありがとうございます。まさふくろーです。
この記事では、取引先マスタの入力フォーム画面の作成手順についてご紹介します。
目次
完成イメージ
エクセルシートから入力フォーム画面へ遷移

入力フォーム画面からエクセルシートへ遷移

作成手順
VBEの起動
起動方法は、VBE(Visual Basic Editor)の起動手順まとめをご覧ください。
ユーザーフォームの挿入
①プロジェクトエクスプローラーの「VBAProject」を選択し、右クリック⇒②ショートカットメニューから「挿入」を選択⇒③「ユーザーフォーム」を選択します。

ユーザーフォームの初期設定
①メニューバーから「表示」を選択⇒②「プロパティウィンド」を選択します。

プロパティウィンドにて、以下項目を設定します。
| 項目 | 設定値 | 説明 | 
| オブジェクト名 | frm取引先 | フォームの名前 | 
| Caption | 取引先 | フォームのタイトル | 
| Height | 394.5 | フォームの高さ | 
| Width | 390.75 | フォームの幅 | 

ユーザーフォームにコントロールを設定する
テキストボックス(入力不可)
①メニューバーから「表示」を選択⇒②「ツールボックス」を選択します。

ツールボックスからテキストボックス「abl」を選択します。

フォーム画面に移動すると「+」表示された状態になります。

左クリックを押したまま、ピンクの矢印の方向にズルズルっとカーソルを移動⇒手を離すとコントロールが配置されます。

プロパティウィンドにて、以下項目を設定します。
| 項目 | 設定値 | 説明 | 
| オブジェクト名 | TextBox1 | コントロール名 | 
| BackColor | &H00FF0000& | コントロールの背景色 | 
| BorderColor | &H00FF0000& | コントロールの境界線の色 | 
| Font | 16、太字、Meiryo UI | コントロールのフォント | 
| ForeColor | &H80000005& | コントロールの文字の色 | 
| Height | 24 | コントロールの高さ | 
| Left | 12 | コントロールの位置(横) | 
| Locked | True | 入力不可 | 
| SpecialEffect | 0 - fmSpecialEffectFlat | コントロールの立体表示 | 
| Text | 取引先マスタメンテナンス | コントロールに表示する文字 | 
| TextAlign | 2 - fmTextAlignCenter | コントロールの文字の表示位置 | 
| Top | 12 | コントロールの位置(縦) | 
| Width | 360 | コントロールの幅 | 
ラベル
①メニューバーから「表示」を選択⇒②「ツールボックス」を選択します。

ツールボックスからラベル「A」を選択します。

フォーム画面に移動すると「+」表示された状態になります。

左クリックを押したまま、ピンクの矢印の方向にズルズルっとカーソルを移動⇒手を離すとコントロールが配置されます。

プロパティウィンドにて、以下項目を設定します。
| 項目 | 設定値 | 説明 | 
| オブジェクト名 | Label1 | コントロール名 | 
| BackColor | &H00FF0000& | コントロールの背景色 | 
| BorderStyle | 0 - fmBorderStyleNone | コントロールの枠線 | 
| Caption | No | コントロールに表示する文字 | 
| Font | 9、太字、Meiryo UI | コントロールのフォント | 
| ForeColor | &H80000012& | コントロールの文字の色 | 
| Height | 12 | コントロールの高さ | 
| Left | 18 | コントロールの位置(横) | 
| TextAlign | 1 - fmTextAlignLeft | コントロールの文字の表示位置 | 
| Top | 60 | コントロールの位置(縦) | 
テキストボックス(入力可)
①メニューバーから「表示」を選択⇒②「ツールボックス」を選択します。

ツールボックスからテキストボックス「abl」を選択します。

フォーム画面に移動すると「+」表示された状態になります。

左クリックを押したまま、ピンクの矢印の方向にズルズルっとカーソルを移動⇒手を離すとコントロールが配置されます。

プロパティウィンドにて、以下項目を設定します。
| 項目 | 設定値 | 説明 | 
| オブジェクト名 | txt社名 | コントロール名 | 
| BorderStyle | 1 - fmBorderStyleSingle | コントロールの枠線 | 
| Font | 9、太字、Meiryo UI | コントロールのフォント | 
| Height | 18 | コントロールの高さ | 
| Left | 66 | コントロールの位置(横) | 
| TabIndex | 1 | タブ移動の順番 | 
| Top | 80 | コントロールの位置(縦) | 
| Width | 306 | コントロールの幅 | 
コマンドボタン
①メニューバーから「表示」を選択⇒②「ツールボックス」を選択します。

ツールボックスからコマンドボタン「ab」を選択します。

フォーム画面に移動すると「+」表示された状態になります。

左クリックを押したまま、ピンクの矢印の方向にズルズルっとカーソルを移動⇒手を離すとコントロールが配置されます。

プロパティウィンドにて、以下項目を設定します。
| 項目 | 設定値 | 説明 | 
| オブジェクト名 | cmd更新 | コントロール名 | 
| Caption | 更新 | コントロールに表示する文字 | 
| Font | 9、太字、Meiryo UI | コントロールのフォント | 
| Height | 24 | コントロールの高さ | 
| Left | 108 | コントロールの位置(横) | 
| TabIndex | 17 | タブ移動の順番 | 
| Top | 336 | コントロールの位置(縦) | 
| Width | 72 | コントロールの幅 | 
コントロールのオブジェクト名一覧

| No | オブジェクト名 | コントロールの種類 | 
| 1 | Label1 | ラベル | 
| 2 | lblNo | ラベル | 
| 3 | Label2 | ラベル | 
| 4 | txt社名 | テキストボックス | 
| 5 | Label3 | ラベル | 
| 6 | txt社名ふりがな | テキストボックス | 
| 7 | Label4 | ラベル | 
| 8 | txt郵便番号 | テキストボックス | 
| 9 | Label5 | ラベル | 
| A | txt住所 | テキストボックス | 
| B | Label6 | ラベル | 
| C | txtTEL | テキストボックス | 
| D | Label7 | ラベル | 
| E | txtFAX | テキストボックス | 
| F | Label8 | ラベル | 
| G | txt担当者 | テキストボックス | 
| H | Label9 | ラベル | 
| I | txt備考 | テキストボックス | 
| J | cmd更新 | コマンドボタン | 
| K | cmd閉じる | コマンドボタン | 
サンプルプログラム
コードウィンドウの起動
プロジェクトエクスプローラーで、フォーム配下にある「frm取引先」を選択します。

右クリック⇒「コードの表示」を選択し、コードウィンドウを起動します。

VBAコードの入力
変数の宣言
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | Option Explicit '変数宣言 Dim sNo As String Dim s社名 As String Dim s社名ふりがな As String Dim s郵便番号 As String Dim s住所 As String Dim sTEL As String Dim sFAX As String Dim s担当者 As String Dim s備考 As String Dim sMsg As String | 
画面起動時の処理
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | Private Sub UserForm_Initialize()     'コントロール初期化     lblNo.Caption = ""     txt社名.Text = ""     txt社名ふりがな.Text = ""     txt郵便番号.Text = ""     txt住所.Text = ""     txtTEL.Text = ""     txtFAX.Text = ""     txt担当者.Text = ""     txt備考.Text = ""     'クリックした行の各項目の値を取得。     sNo = Cells(ActiveCell.Row, 1).Value            'No列の値を取得     s社名 = Cells(ActiveCell.Row, 2).Value           '社名列の値を取得     s社名ふりがな = Cells(ActiveCell.Row, 3).Value    '社名ふりがな列の値を取得     s郵便番号 = Cells(ActiveCell.Row, 4).Value       '郵便番号列の値を取得     s住所 = Cells(ActiveCell.Row, 5).Value           '住所列の値を取得     sTEL = Cells(ActiveCell.Row, 6).Value           'TEL列の値を取得     sFAX = Cells(ActiveCell.Row, 7).Value           'FAX列の値を取得     s担当者 = Cells(ActiveCell.Row, 8).Value         '担当者列の値を取得     s備考 = Cells(ActiveCell.Row, 9).Value           '備考列の値を取得     'クリックした行のNo列に値が設定されているか判断し、     '値が入っている場合は、取引先画面の各項目に値を設定。     If sNo <> "" Then      lblNo.Caption = sNo      txt社名.Text = s社名      txt社名ふりがな.Text = s社名ふりがな      txt郵便番号.Text = s郵便番号      txt住所.Text = s住所      txtTEL.Text = sTEL      txtFAX.Text = sFAX      txt担当者.Text = s担当者      txt備考.Text = s備考     End If End Sub | 
更新ボタンが押されたときの処理
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Private Sub cmd更新_Click()     If ENTRY_CHECK = False Then         Call HYOJI_MSG(sMsg)         Exit Sub     Else         If HYOJI_MSG("Info_Num1") = True Then             '画面で入力された値をシートに反映             Cells(ActiveCell.Row, 2).Value = txt社名.Text             Cells(ActiveCell.Row, 3).Value = txt社名ふりがな.Text             Cells(ActiveCell.Row, 4).Value = txt郵便番号.Text             Cells(ActiveCell.Row, 5).Value = txt住所.Text             Cells(ActiveCell.Row, 6).Value = txtTEL.Text             Cells(ActiveCell.Row, 7).Value = txtFAX.Text             Cells(ActiveCell.Row, 8).Value = txt担当者.Text             Cells(ActiveCell.Row, 9).Value = txt備考.Text         Else             Exit Sub         End If     End If     Unload Me     Cells(ActiveCell.Row, 10).Activate End Sub | 
閉じるボタンが押されたときの処理
| 1 2 3 4 5 6 7 | Private Sub cmd閉じる_Click()     Unload Me     Cells(ActiveCell.Row, 10).Activate End Sub | 
入力チェック処理
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | '入力チェック Private Function ENTRY_CHECK() As Boolean     ENTRY_CHECK = True     sMsg = ""     '必須項目チェック     '必須項目が未入力の場合、テキストボックスを赤色にする。     If txt社名.Text = "" Then         txt社名.BackColor = &HC0C0FF         If sMsg = "" Then             sMsg = "Err_Num1"         End If         ENTRY_CHECK = False     End If     If txt郵便番号.Text = "" Then         txt郵便番号.BackColor = &HC0C0FF         If sMsg = "" Then             sMsg = "Err_Num1"         End If         ENTRY_CHECK = False     End If     If txt住所.Text = "" Then         txt住所.BackColor = &HC0C0FF         If sMsg = "" Then             sMsg = "Err_Num1"         End If         ENTRY_CHECK = False     End If     If txtTEL.Text = "" Then         txtTEL.BackColor = &HC0C0FF         If sMsg = "" Then             sMsg = "Err_Num1"         End If         ENTRY_CHECK = False     End If End Function | 
数字、ハイフンのみ入力可の関数
| 1 2 3 4 5 6 7 8 9 10 11 12 | '数字、ハイフンのみ入力可の関数 Private Function MOJI_SEIGYO1(sKeyAscii As MSForms.ReturnInteger) As Boolean     MOJI_SEIGYO1 = False     If sKeyAscii < 48 Or sKeyAscii > 57 Then         If sKeyAscii <> 45 Then             MOJI_SEIGYO1 = True         End If     End If End Function | 
メッセージボックスに表示する内容をまとめた関数
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 'メッセージボックスに表示する内容をまとめた関数 Private Function HYOJI_MSG(sNum As String) As Boolean     Dim rc As VbMsgBoxResult     HYOJI_MSG = False     Select Case sNum     Case "Err_Num1"         MsgBox "必須項目です。" & vbCrLf & "入力してください。", vbOKOnly + vbExclamation     Case "Info_Num1"         rc = MsgBox("更新します。" & vbCrLf & "よろしいですか?", vbYesNo + vbInformation)         If rc = vbYes Then             HYOJI_MSG = True         End If     Case "Alert_Num1"     End Select End Function | 
社名の入力制御
| 1 2 3 4 5 6 | Private Sub txt社名_Change()     '必須項目 赤色クリア     txt社名.BackColor = &HFFFFFF End Sub | 
郵便番号の入力制御
| 1 2 3 4 5 6 7 8 | Private Sub txt郵便番号_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)     '数字、ハイフンのみ入力可     If MOJI_SEIGYO1(KeyAscii) = True Then         KeyAscii = 0     End If End Sub | 
| 1 2 3 4 5 6 | Private Sub txt郵便番号_Change()     '必須項目 赤色クリア     txt郵便番号.BackColor = &HFFFFFF End Sub | 
住所の入力制御
| 1 2 3 4 5 6 | Private Sub txt住所_Change()     '必須項目 赤色クリア     txt住所.BackColor = &HFFFFFF End Sub | 
TELの入力制御
| 1 2 3 4 5 6 7 8 | Private Sub txtTEL_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)     '数字、ハイフンのみ入力可     If MOJI_SEIGYO1(KeyAscii) = True Then         KeyAscii = 0     End If End Sub | 
| 1 2 3 4 5 6 | Private Sub txtTEL_Change()     '必須項目 赤色クリア     txtTEL.BackColor = &HFFFFFF End Sub | 
FAXの入力制御
| 1 2 3 4 5 6 7 8 | Private Sub txtFAX_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)     '数字、ハイフンのみ入力可     If MOJI_SEIGYO1(KeyAscii) = True Then         KeyAscii = 0     End If End Sub | 
最後まで読んでいただき、ありがとうございました!



