Vba-userforms

提供:Dev Guides
移動先:案内検索

VBA-ユーザーフォーム

  • ユーザーフォーム*は、ユーザーデータ入力をより制御しやすく、ユーザーにとって使いやすいカスタムビルトダイアログボックスです。 この章では、単純なフォームを設計し、Excelにデータを追加する方法を学びます。
  • ステップ1 *-Altキーを押しながらF11キーを押してVBAウィンドウに移動し、[挿入]メニューに移動して[ユーザーフォーム]を選択します。 選択すると、次のスクリーンショットに示すようにユーザーフォームが表示されます。

VBScriptの意思決定ステートメント

  • ステップ2 *-指定されたコントロールを使用してフォームを設計します。

VBScriptの意思決定ステートメント

  • ステップ3 *-各コントロールを追加した後、コントロールに名前を付ける必要があります。 キャプションはフォームに表示されるものに対応し、名前はその要素のVBAコードを記述するときに表示される論理名に対応します。

VBScriptの意思決定ステートメント

  • ステップ4 *-以下は、追加されたコントロールのそれぞれに対する名前です。
Control Logical Name Caption
From frmempform Employee Form
Employee ID Label Box empid Employee ID
firstname Label Box firstname First Name
lastname Label Box lastname Last Name
dob Label Box dob Date of Birth
mailid Label Box mailid Email ID
Passportholder Label Box Passportholder Passport Holder
Emp ID Text Box txtempid NOT Applicable
First Name Text Box txtfirstname NOT Applicable
Last Name Text Box txtlastname NOT Applicable
Email ID Text Box txtemailid NOT Applicable
Date Combo Box cmbdate NOT Applicable
Month Combo Box cmbmonth NOT Applicable
Year Combo Box cmbyear NOT Applicable
Yes Radio Button radioyes Yes
No Radio Button radiono No
Submit Button btnsubmit Submit
Cancel Button btncancel Cancel
  • ステップ5 *-フォームを右クリックして[コードの表示]を選択し、フォームロードイベントのコードを追加します。

VBScriptの意思決定ステートメント

  • ステップ6 *-次のスクリーンショットに示すように、オブジェクトのドロップダウンから「ユーザーフォーム」を選択し、「初期化」メソッドを選択します。

VBScriptの意思決定ステートメント

  • ステップ7 *-フォームのロード時に、テキストボックスがクリアされ、ドロップダウンボックスが塗りつぶされ、ラジオボタンがリセットされることを確認します。
Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor
   txtempid.Value = ""
   txtempid.SetFocus

   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""

   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear

   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With

   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With

   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With

   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub
  • ステップ8 *-コードを[送信]ボタンに追加します。 送信ボタンをクリックすると、ユーザーはワークシートに値を追加できるはずです。
Private Sub btnsubmit_Click()
   Dim emptyRow As Long

   'Make Sheet1 active
   Sheet1.Activate

   'Determine emptyRow
   emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

   'Transfer information
   Cells(emptyRow, 1).Value = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value

   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub
  • ステップ9 *-ユーザーが[キャンセル]ボタンをクリックしたときにフォームを閉じるメソッドを追加します。
Private Sub btncancel_Click()
   Unload Me
End Sub
  • ステップ10 *-[実行]ボタンをクリックしてフォームを実行します。 フォームに値を入力し、「送信」ボタンをクリックします。 次のスクリーンショットに示すように、値は自動的にワークシートに流れます。

VBScriptの意思決定ステートメント