用户表单日期写入Excel客户对应右侧空Contact列的VBA需求
Solution to Add Dates to Sequential Contact Columns for Selected Customers
Got it, let's get this sorted for you. Your goal is to make the Client List UserForm write the input date to the first empty "Contact" column for the selected customer—even for Customer 6, right? Here's a refined VBA implementation that handles this logic reliably:
Step-by-Step Explanation & Code
We'll adjust your CommandButton1_Click subroutine to:
- Locate the row of the selected customer in the "Contacts" worksheet
- Find the first empty column starting from your "Contact 1" column (we'll assume Contact 1 is column B—adjust the column index if your sheet layout differs)
- Write the date to that empty cell
Private Sub CommandButton1_Click() Dim ws As Worksheet Dim customerRow As Long Dim emptyContactCol As Long Dim selectedCustomer As String ' Set reference to the Contacts sheet Set ws = ThisWorkbook.Sheets("Contacts") ' Get selected customer from your UserForm (replace ComboBox1 with your actual selection control name) selectedCustomer = Me.ComboBox1.Value ' Find the row of the selected customer (assuming customer names are in column A) On Error Resume Next customerRow = ws.Columns("A").Find(What:=selectedCustomer, LookIn:=xlValues, LookAt:=xlWhole).Row On Error GoTo 0 ' Validate if customer was found If customerRow = 0 Then MsgBox "Customer not found!", vbExclamation Exit Sub End If ' Find the first empty column starting from Contact 1 emptyContactCol = ws.Cells(customerRow, ws.Columns.Count).End(xlToLeft).Column + 1 ' Ensure we start at Contact 1 if no dates have been added yet If emptyContactCol < 2 Then ' 2 = column B (Contact 1) emptyContactCol = 2 End If ' Write the date (replace Date with Me.DateTextBox.Value if using a date input control) ws.Cells(customerRow, emptyContactCol).Value = Date ' Optional confirmation message MsgBox "Date added to Contact " & (emptyContactCol - 1) & " for " & selectedCustomer, vbInformation ' Clear UserForm controls (adjust based on your form's fields) Me.ComboBox1.Value = "" ' Me.DateTextBox.Value = "" ' Uncomment if you have a date input box End Sub
Key Notes to Customize
- Control Names: Swap
ComboBox1with the actual name of your UserForm's customer selection control (e.g., ListBox or TextBox). If you use a dedicated date input box, replaceDatewithMe.YourDateControl.Value. - Column Layout: If "Contact 1" isn't in column B, update the
emptyContactCol < 2check to match your starting column number (e.g., useemptyContactCol < 3if Contact 1 is column C). - Error Handling: The code checks for missing customers to avoid runtime errors if an invalid selection is made.
This logic works for all customers, including Customer 6—no matter which customer is selected, it will always find the next empty Contact column and write the date there.
内容的提问来源于stack exchange,提问作者Jose Cortez
相关产品推荐
相关产品推荐

