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