VBA - 使用者窗體



使用者窗體是一個自定義構建的對話方塊,它使使用者資料輸入更易於控制,並且更易於使用者使用。 在本章中,您將學習設計一個簡單的窗體並將資料新增到 Excel 中。

步驟 1 - 透過按 Alt+F11 導航到 VBA 視窗,然後導航到“插入”選單並選擇“使用者窗體”。 選擇後,使用者窗體將顯示如下面的螢幕截圖所示。

Decision making statements in VBScript

步驟 2 - 使用給定的控制元件設計窗體。

Decision making statements in VBScript

步驟 3 - 新增每個控制元件後,必須為控制元件命名。 標題對應於窗體上顯示的內容,名稱對應於在為該元素編寫 VBA 程式碼時將出現的邏輯名稱。

Decision making statements in VBScript

步驟 4 - 以下是每個新增控制元件的名稱。

控制元件 邏輯名稱 標題
窗體 frmempform 員工資訊
員工 ID 標籤框 empid 員工 ID
名字標籤框 firstname 名字
姓氏標籤框 lastname 姓氏
出生日期標籤框 dob 出生日期
郵箱標籤框 mailid 郵箱
護照持有者標籤框 Passportholder 護照持有者
員工 ID 文字框 txtempid 不適用
名字文字框 txtfirstname 不適用
姓氏文字框 txtlastname 不適用
郵箱文字框 txtemailid 不適用
日期組合框 cmbdate 不適用
月份組合框 cmbmonth 不適用
年份組合框 cmbyear 不適用
是單選按鈕 radioyes
否單選按鈕 radiono
提交按鈕 btnsubmit 提交
取消按鈕 btncancel 取消

步驟 5 - 透過右鍵單擊窗體並選擇“檢視程式碼”來新增窗體載入事件的程式碼。

Decision making statements in VBScript

步驟 6 - 從物件下拉列表中選擇“使用者窗體”,然後選擇“初始化”方法,如下面的螢幕截圖所示。

Decision making statements in 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 - 透過單擊“執行”按鈕執行窗體。 將值輸入窗體,然後單擊“提交”按鈕。 值將自動流入工作表,如下面的螢幕截圖所示。

Decision making statements in VBScript
廣告