|
|
Thread Tools | Display Modes |
#1
|
||||
|
||||
Create a ComboBox in a Form that creates a new document and autofills a textBox
Is it possible to create a ComboBox in a form that autofills a textBox? So I have multiple names in a combo box that has numbers associated to each. I want to be able to select more than one name and have the form create separate documents with one person per document and their associated name. Is that possible? How could I go about doing that? |
#2
|
||||
|
||||
If you want multiple selections, you need a list box rather than a combo-box. It is not clear what the relevance of the text box is, or how it relates to multiple selections. However, the basic premise of making multiple selections from a list of items and creating a new document for each is certainly viable.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
||||
|
||||
Follow up question now using ListBox
This is what I've got so far. How can I save all of the variables (i.e. EmpName, EmpNum, ManagerName, etc) and when the new document opens up store those values into assigned textboxes?
Code:
Option Explicit Private Sub UserForm_Initialize() EmpNameList.MultiSelect = 2 With EmpNameList .AddItem "Ally" .AddItem "Linda" .AddItem "Cameron" .AddItem "Ron" .AddItem "Tony" End With End Sub Private Sub EmpNameList_Change() Select Case EmpName Case "Ally" With EmpNum EmpNum.Text = "1234" End With With ManagerName ManagerName.Text = "Jerry" End With Case "Linda" With EmpNum EmpNum.Text = "4567" End With With ManagerName ManagerName.Text = "Mike" End With Case "Cameron" With EmpNum EmpNum.Text = "6789" End With With ManagerName ManagerName.Text = "Tom" End With Case "Ron" With EmpNum EmpNum.Text = "0132" End With With ManagerName ManagerName.Text = "Ralph" End With Case "Tony" With EmpNum EmpNum.Text = "6783" End With With ManagerName ManagerName.Text = "Tom" End With End Select End Sub Private Sub cmdOK_Click() Dim fileName As String Dim Cost_Center Dim Auth_Date1 Dim Auth_Date2 Dim Emp_Name Dim Emp_Num Dim Man_Name EmpName.List = Array("Ally, Linda, Cameron, Ron, Tony") ' Checking for completion of the form If CostCenter.Value = "" Then MsgBox "Please enter the Cost Center.", vbExclamation, "Input Data" CostCenter.SetFocus Exit Sub End If If AuthDate1.Value = "" Then MsgBox "Please enter the Period of Authorization.", vbExclamation, "Input Data" AuthDate1.SetFocus Exit Sub End If If AuthDate2.Value = "" Then MsgBox "Please enter the Period of Authorization.", vbExclamation, "Input Data" AuthDate2.SetFocus Exit Sub End If If EmpName.Value = "" Then MsgBox "Please select the Employee Name(s).", vbExclamation, "Input Data" EmpName.SetFocus Exit Sub End If If EmpNum.Value = "" Then MsgBox "Please enter the Employee Number(s).", vbExclamation, "Input Data" EmpNum.SetFocus Exit Sub End If If ManagerName.Value = "" Then MsgBox "Please enter the Authorizing Manager's Name.", vbExclamation, "Input Data" ManagerName.SetFocus Exit Sub End If Me.Hide Cost_Center = CostCenter.Value Auth_Date1 = AuthDate1.Value Auth_Date2 = AuthDate2.Value Emp_Name = EmpName.Value Emp_Num = EmpNum.Value Man_Name = ManagerName.Value ' Creates new document to save as the Employee's Authorization Form fileName = EmpName.Value & "_LaborAuthorizationForm" Documents.Add "LaborAuthorizationForm.docm" With Dialogs(wdDialogFileSaveAs) .Name = fileName .Show End With End Sub Private Sub cmdCancel_Click() Me.Hide End Sub |
#4
|
|||
|
|||
You certainly don't need all of that code. Assuming your list is small like your example and relatively static:
Code:
Option Explicit Private Sub UserForm_Initialize() With EmpNameList .MultiSelect = 1 .AddItem .List(.ListCount - 1, 0) = "Ally" .List(.ListCount - 1, 1) = "1234" .List(.ListCount - 1, 2) = "Ally" .List(.ListCount - 1, 3) = "Ally" .AddItem .List(.ListCount - 1, 0) = "Linda" .List(.ListCount - 1, 1) = "1234" .List(.ListCount - 1, 2) = "Jerry" .AddItem .List(.ListCount - 1, 0) = "Cameron" .List(.ListCount - 1, 1) = "6789" .List(.ListCount - 1, 2) = "Tom" End With cmdOK.Enabled = False End Sub Private Sub Cost_Center_Change() Validate End Sub Private Sub Auth_Date1_Change() Validate End Sub Private Sub Auth_Date2_Change() Validate End Sub Private Sub cmdOK_Click() Dim fileName As String Dim lngIndex As Long Dim oDoc As Document For lngIndex = 0 To EmpNameList.ListCount - 1 If EmpNameList.Selected(lngIndex) Then Set oDoc = Documents.Add("LaborAuthorizationForm.docm") 'You should use a template not a document. With oDoc 'Replace these msgboxes with whatever code you want to use to write to the document targets (i.e., table cells, bookmarks, content controls, etc.) MsgBox EmpNameList.List(lngIndex, 0) MsgBox EmpNameList.List(lngIndex, 1) MsgBox EmpNameList.List(lngIndex, 2) MsgBox Cost_Center MsgBox Auth_Date1 MsgBox Auth_Date2 oDoc.SaveAs2 EmpNameList.List(lngIndex, 0) & "_LaborAuthorizationForm" oDoc.Close Set oDoc = Nothing End If Next End Sub Private Sub cmdCancel_Click() Hide End Sub Sub Validate() cmdOK.Enabled = True If Cost_Center = vbNullString Then cmdOK.Enabled = False If Not IsDate(Auth_Date1) Then cmdOK.Enabled = False If Not IsDate(Auth_Date2) Then cmdOK.Enabled = False End Sub |
#5
|
||||
|
||||
So if I wanted the new document to have textboxes that are filled with the employee name, number, etc. from the previous document how would that look? Would I have to have the textboxes already in the new document (template?) or would the old document create the textbox when it creates the new document?
|
#6
|
|||
|
|||
Yes you need to put targets (bookmarks, table cells, content controls) in your target document template. Lets say you rename LaborAuthorizationForm.docm as LaborAuthorizationForm.dotm and in it you have a content control titled "Employee Name"
Replace MsgBox EmpNameList.List(lngIndex, 0) oDoc.SelectionContentControlsByTitle("Employee Name").Item(1).Range.Text = EmpNameList.List(lngIndex, 0) |
Tags |
combo box, forms vba |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
A form for my own use which creates a document? | CactusWren | Word | 5 | 08-31-2015 11:22 AM |
how to save contents in textbox in VB2013 form into a Word document? | saltlakebuffalo | Word VBA | 6 | 12-10-2014 06:12 PM |
Outlook 2007 Code For Matching Textbox to a Combobox in a Different Form | lms | Outlook | 4 | 07-03-2013 08:34 AM |
how to populate textbox based on combobox selection in word | IvanGeorgiev | Word VBA | 1 | 02-21-2013 07:28 PM |
Textbox updating from combobox selection | paxile2k | Word VBA | 0 | 10-26-2010 02:30 PM |