Hi all,
I am new to post on this forum, but I have referred to this site on various occasions.
Am also a VBA illiterate but I have some how made my Userform work.
So here's my question.
How can I update the database using the form which has dependent combo box selection?
- I have created a userform which looks up data from a sheet based on:
1. unique customer name (column T) list : upon selection of which returns a list of the second combo box "First name"
2. "first name" selection populates the form
This works perfectly well upto here. But when I try to change the "customer name" selection, the "First name" remains the list of the first choice.
Also if i try to update the form, the first row of the filtered data gets updated, not the corresponding row...
I need help:
- to make first name list change based on the "Customer Name" selection
- to be able to update the right row on the database using the form
have just pasted the partial code...
I am new to post on this forum, but I have referred to this site on various occasions.
Am also a VBA illiterate but I have some how made my Userform work.
So here's my question.
How can I update the database using the form which has dependent combo box selection?
- I have created a userform which looks up data from a sheet based on:
1. unique customer name (column T) list : upon selection of which returns a list of the second combo box "First name"
2. "first name" selection populates the form
This works perfectly well upto here. But when I try to change the "customer name" selection, the "First name" remains the list of the first choice.
Also if i try to update the form, the first row of the filtered data gets updated, not the corresponding row...
I need help:
- to make first name list change based on the "Customer Name" selection
- to be able to update the right row on the database using the form
have just pasted the partial code...
Code:
Sub CmbCustomer_DropButt*******() button click
If CmbCustomer.ListCount = 0 Then
Worksheets("Data").Activate
Dim r As Range
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
For Each r In Range("T2", Range("T" & Rows.Count).End(xlUp))
If Not IsEmpty(r) And Not .exists(r.Value) Then .Add r.Value, Nothing
Next
Me.CmbCustomer.List = .keys
End With
End If
End Sub
Private Sub CmbCustomer_Change()
Worksheets("Data").Activate
With ActiveSheet
.AutoFilterMode = False
With .Range("T1", Range("a" & Rows.Count).End(xlUp))
.AutoFilter
If Len(Me.CmbCustomer.Value) > 0 Then
.AutoFilter Field:=20, Criteria1:=Me.CmbCustomer.Value
End If
End With
End With
End Sub
Sub CmbFirstName_DropButt*******() button click
If CmbCustomer = "" Then
MsgBox "Select Customer Name"
Else:
If CmbFirstName.ListCount = 0 Then
Worksheets("Data").Activate
Dim rCell As Range, rVisibles As Range
With Sheets("Data")
Set rVisibles = .Range("x2", .Cells(Rows.Count, "x").End(xlUp)).SpecialCells(xlCellTypeVisible)
End With
For Each rCell In rVisibles
Me.CmbFirstName.AddItem rCell.Value
Next rCell
End If
End If
End Sub
Private Sub cmbfirstname_change()
Worksheets("Data").Activate
Dim lngDataRow As Long
lngDataRow = Application.Match(Me.CmbFirstName.Value, Worksheets("Data").Range("X:X"), 0)
If Worksheets("Data").Range("A" & lngDataRow).Value = 1 Then Me.cboCustStat.Value = "Active"
If Worksheets("Data").Range("A" & lngDataRow).Value = 2 Then Me.cboCustStat.Value = "Prospect"
If Worksheets("Data").Range("A" & lngDataRow).Value = 0 Then Me.cboCustStat.Value = "Closed"
If Worksheets("Data").Range("B" & lngDataRow).Value = 1 Then Me.cmbPriceList.Value = "Yes"
If Worksheets("Data").Range("B" & lngDataRow).Value = "" Then Me.cmbPriceList.Value = "No"
If Worksheets("Data").Range("C" & lngDataRow).Value = 1 Then Me.cmbMailingEvent.Value = "Yes"
If Worksheets("Data").Range("C" & lngDataRow).Value = "" Then Me.cmbMailingEvent.Value = "No"
If Worksheets("Data").Range("D" & lngDataRow).Value = 1 Then Me.CmbBauma.Value = "Yes"
If Worksheets("Data").Range("D" & lngDataRow).Value = "" Then Me.CmbBauma.Value = "No"
If Worksheets("Data").Range("E" & lngDataRow).Value = 1 Then Me.cboGforce.Value = "Yes"
If Worksheets("Data").Range("E" & lngDataRow).Value = "" Then Me.cboGforce.Value = "No"
If Worksheets("Data").Range("G" & lngDataRow).Value = 1 Then Me.cboMail.Value = "Yes"
If Worksheets("Data").Range("G" & lngDataRow).Value = "" Then Me.cboMail.Value = "No"
If Worksheets("Data").Range("J" & lngDataRow).Value = 1 Then Me.cmbMailingParts.Value = "Yes"
If Worksheets("Data").Range("J" & lngDataRow).Value = "" Then Me.cmbMailingParts.Value = "No"
If Worksheets("Data").Range("L" & lngDataRow).Value = 1 Then Me.CmbMailHigh.Value = "Yes"
If Worksheets("Data").Range("L" & lngDataRow).Value = "" Then Me.CmbMailHigh.Value = "No"
If Worksheets("Data").Range("M" & lngDataRow).Value = 1 Then Me.CmbMail30.Value = "Yes"
If Worksheets("Data").Range("M" & lngDataRow).Value = "" Then Me.CmbMail30.Value = "No"
If Worksheets("Data").Range("N" & lngDataRow).Value = 1 Then Me.cmbTurnover.Value = "Yes"
If Worksheets("Data").Range("N" & lngDataRow).Value = "" Then Me.cmbTurnover.Value = "No"
If Worksheets("Data").Range("Q" & lngDataRow).Value = 1 Then Me.CmbDieCast.Value = "Yes"
If Worksheets("Data").Range("Q" & lngDataRow).Value = "" Then Me.CmbDieCast.Value = "No"
Me.txtAKA.Value = Worksheets("Data").Range("U" & lngDataRow).Value
Me.cboTitle.Value = Worksheets("Data").Range("W" & lngDataRow).Value
Me.CmbSurname.Value = Worksheets("Data").Range("Y" & lngDataRow).Value
Me.txtDesignation.Value = Worksheets("Data").Range("Z" & lngDataRow).Value
Me.txtEmail1.Value = Worksheets("Data").Range("AA" & lngDataRow).Value
Me.txtDirectPhone.Value = Worksheets("Data").Range("AB" & lngDataRow).Value
Me.txtStdPhone.Value = Worksheets("Data").Range("AC" & lngDataRow).Value
Me.txtMobile.Value = Worksheets("Data").Range("AD" & lngDataRow).Value
Me.txtFax.Value = Worksheets("Data").Range("AE" & lngDataRow).Value
Me.txtWebsite.Value = Worksheets("Data").Range("AF" & lngDataRow).Value
Me.txtAddress.Value = Worksheets("Data").Range("AG" & lngDataRow).Value
Me.txtAddress2.Value = Worksheets("Data").Range("AH" & lngDataRow).Value
Me.TxtAddress3.Value = Worksheets("Data").Range("AI" & lngDataRow).Value
Me.txtCity.Value = Worksheets("Data").Range("AJ" & lngDataRow).Value
Me.txtState.Value = Worksheets("Data").Range("AK" & lngDataRow).Value
Me.txtPostcode.Value = Worksheets("Data").Range("AL" & lngDataRow).Value
Me.cboCountry = Worksheets("Data").Range("AM" & lngDataRow).Value
Me.cmbLang.Value = Worksheets("Data").Range("AN" & lngDataRow).Value
Me.cboAssignedTo.Value = Worksheets("Data").Range("AO" & lngDataRow).Value
Me.cmbEmear.Value = Worksheets("Data").Range("AP" & lngDataRow).Value
Me.cboCat.Value = Worksheets("Data").Range("AQ" & lngDataRow).Value
Me.cboPrinSeg.Value = Worksheets("Data").Range("AR" & lngDataRow).Value
Me.cboOption.Value = Worksheets("Data").Range("As" & lngDataRow).Value
Me.CboRent.Value = Worksheets("Data").Range("At" & lngDataRow).Value
Me.txtDlrNme.Value = Worksheets("Data").Range("AU" & lngDataRow).Value
Me.txtActivity.Value = Worksheets("Data").Range("AV" & lngDataRow).Value
Me.txtTMS.Value = Worksheets("Data").Range("AW" & lngDataRow).Value
Me.cmbTMS.Value = Worksheets("Data").Range("AX" & lngDataRow).Value
Me.CmbSteel.Value = Worksheets("Data").Range("AY" & lngDataRow).Value
Me.cmbGTH.Value = Worksheets("Data").Range("AZ" & lngDataRow).Value
Me.txtParts.Value = Worksheets("Data").Range("BA" & lngDataRow).Value
Me.chkAlum.Value = Worksheets("Data").Range("BB" & lngDataRow).Value
Me.ChkBoom.Value = Worksheets("Data").Range("BC" & lngDataRow).Value
Me.ChkScissor.Value = Worksheets("Data").Range("BD" & lngDataRow).Value
Me.ChkGTH.Value = Worksheets("Data").Range("BE" & lngDataRow).Value
Me.ChkOBrands.Value = Worksheets("Data").Range("BF" & lngDataRow).Value
Me.ChkParts.Value = Worksheets("Data").Range("BG" & lngDataRow).Value
Me.ChkService.Value = Worksheets("Data").Range("BH" & lngDataRow).Value
Me.ChkTraining.Value = Worksheets("Data").Range("BI" & lngDataRow).Value
Me.ChkUsed.Value = Worksheets("Data").Range("BJ" & lngDataRow).Value
Me.TxtLastOb.Value = Worksheets("Data").Range("BK" & lngDataRow).Value
Worksheets("Data").Range("BL" & lngDataRow).Value = Me.txtLastAns.Value
Worksheets("Data").Range("BM" & lngDataRow).Value = Me.txtNote.Value
Worksheets("Data").Range("BN" & lngDataRow).Value = Me.txtListing.Value
Me.txtCustomer2 = Me.CmbCustomer.Text
Me.txtFirstName2 = Me.CmbFirstName.Text
Me.TxtSurname2 = Me.CmbSurname.Text
Me.txttitle2 = Me.txtDesignation.Text
End Sub