第1回 フォームを使った顧客管理の作成 [初級編]

Excelのユーザーフォームを使った顧客管理ソフトの作成手順を紹介します。
今回は初級編として、「顧客情報入力」フォームからデータを入力して登録ボタンを押下すると最終行に追加される という簡単な仕様で作成します。
(作成手順の最後で完成したExcelファイルを無料ダウンロード出来ます)
koky010200.gif


<作成手順>
●顧客データを保存するシートのシート名を「顧客情報」に変更し、
1行目に保存するデータの名称を入力します。
koky010000.gif

●「Visual Basic Editor」を起動します。
Excel2003・・・メニューバー「ツール→マクロ→Visual Basic Editor」
Excel2007・・・リボン「開発→Visual Basic Editor」(開発タブが表示されていない場合は「Officeボタン→Excelのオプション→基本設定→Excelの使用に関する基本オプション→[開発]タブをリボンに表示する」をチェックONする)
Excel2010/2013/2016・・・リボン「開発→Visual Basic Editor」(開発タブが表示されていない場合は「ファイル→オプション→リボンのユーザー設定→メインタブ→[開発]をチェックONする」)

●ツールバー「挿入→ユーザーフォーム」で新規フォームを作成します。
koky010010.gif

●ツールボックスの「テキストボックス」をクリックして、新規フォームへテキストボックスコントロールを配置します。
koky010030.gif

配置したテキストボックスの「オブジェクト名」プロパティに名前(txt顧客番号)を付けます。
(プロパティウィンドウが表示されていない場合は、ツールバー「表示→プロパティウィンドウ」)
koky010040.gif

テキストボックスに表示するフォント(文字サイズ等)を「Font」プロパティで設定します。
koky010050.gif

テキストボックスのIMEモード(ひらがな/半角英数 等)を「IME Mode」プロパティで設定します。
半角英数のみ(IMEオフ)の場合・・・「2 - fmIMEModeOff」
ひらがな入力の場合・・・「4 - fmIMEModeHiragana」
koky010055.gif

●ツールボックスの「ラベル」をクリックして、ラベルコントロールを配置します。
koky010060.gif

ラベルに表示する名称を「Caption」プロパティで設定します。
koky010070.gif

同様の手順で「txt顧客名」「txt郵便番号」「txt住所」「txt電話番号」「txt備考」のテキストボックスとラベルを追加します。
koky010080.gif

備考のような複数行入力したい項目には「MultiLine」プロパティに「True」を設定すると、入力時に「Shift」+「Enter」キーを押下することで改行入力できます。
koky010085.gif

●ツールボックスの「コマンドボタン」をクリックして、ボタンを配置します。
koky010090.gif

配置したコマンドボタンの「オブジェクト名」プロパティに名前(cmd登録)を付けて、ボタンに表示する名称(登録)を「Caption」プロパティに設定します。
koky010100.gif

●作成したフォームの「オブジェクト名」プロパティに名前(frm顧客情報入力)を付けて、フォームのタイトルバーに表示する名称(顧客情報入力)を「Caption」プロパティに設定します。
koky010110.gif

●入力順番の設定は、フォーム上を右クリックしてショートカットメニューの「タブオーダー」から設定します。
koky010112.gif

koky010114.gif

●「登録」ボタンをダブルクリックして、「登録」ボタン押下時の処理を記述します。
koky010120.gif

koky010140.gif

Private Sub cmd登録_Click()      '← 登録ボタン押下時の処理追加
    Dim wRow As Long

    If Me.txt顧客番号 = "" Then      '顧客番号が未入力の場合はエラー表示
        MsgBox "顧客番号を入力してください。", vbExclamation + vbOKOnly, "入力エラー"
        Exit Sub
    End If

    If Me.txt顧客名 = "" Then      '顧客名が未入力の場合はエラー表示
        MsgBox "顧客名を入力してください。", vbExclamation + vbOKOnly, "入力エラー"
        Exit Sub
    End If

    With Worksheets("顧客情報")
        wRow = .Range("A1").CurrentRegion.Rows.Count + 1      '← 最終行+1
        .Cells(wRow, 1) = Me.txt顧客番号      'フォームに入力された各データをシートに送る
        .Cells(wRow, 2) = Me.txt顧客名
        .Cells(wRow, 3) = Me.txt郵便番号
        .Cells(wRow, 4) = Me.txt住所
        .Cells(wRow, 5) = Me.txt電話番号
        .Cells(wRow, 6) = Me.txt備考
    End With

    Unload Me      '← フォームを閉じる

End Sub


●「顧客情報」シートへフォーム起動ボタンを追加します。
Excel2003・・・VisualBasicツールバーの「コントロールツールボックス→コマンドボタン」(VisualBasicツールバーが表示されていない場合は、メニューバー「表示→ツールバー→VisualBasic」)
Excel2007/2010/2013/2016・・・リボン「開発→コントロール→挿入→ActiveXコントロール→コマンドボタン」(開発タブが表示されていない場合は「ファイル→オプション→リボンのユーザー設定→メインタブ→[開発]をチェックONする」)
koky010150.gif

コマンドボタン上で右クリックしてショートカットメニューから「プロパティ」を選択し、「オブジェクト名」プロパティにコマンドボタンの名前(cmd顧客情報入力)を設定し、「Caption」プロパティにボタンに表示する名称(顧客情報入力)を設定する。
koky010160.gif

koky010170.gif

「顧客情報入力」ボタンをダブルクリックして、「顧客情報入力」ボタン押下時の処理を記述します。
koky010180.gif

koky010190.gif

Private Sub cmd顧客情報入力_Click()
    frm顧客情報入力.Show      '← フォームを表示する
End Sub


<完成>
koky010200.gif

完成したファイルを下記ボタンからダウンロード出来ます。
download.gif






次回は、今回作成したフォームに「検索」ボタンを追加して、入力済みデータの呼び出し・修正登録ができるように機能追加する手順を紹介します。
第2回 フォームを使った顧客管理の作成 [検索ボタンの追加]