+ Reply to Thread
Results 1 to 5 of 5

Code Troubles

Hybrid View

  1. #1
    Registered User
    Join Date
    06-26-2006
    Posts
    16

    Code Troubles

    Hi,

    I am attempting to write code that will take a comboBox selection and then autofill other combo boxes with related selections (in the same row on a lookuplist). I believe i have the idea correct, but i am struggling with actual implementation. Any and all comments and suggestions are greatly appreciated.

    Private Sub AutoFill()
    Dim DesiredColumn As Range
    Dim RoundRow As Range
    Dim RowNumber As Range
    Dim ws As Worksheet
    Set ws = Worksheets("LookUpLists")
    
    'Specifies the desired column as the Description Column
    Set DesiredColumn = ws.Range(f2, F1100)
    
    'Searches for user's entry into Description Combobox
    Set FoundRow = DesiredColumn.Find(cboDescription.Value, f2, xlValues, , xlByColumns)
    
    'Specifies Row # of users selection
    Set RowNumber = FoundRow.Row
    
    'Assigns the values from the accompaning columns to the combo box value
    cboMfgrNumber.Value = ws.Cells(RowNumber, 7).Value
    cboPacNumber.Value = ws.Cells(RowNumber, 8).Value
    
    End Sub

  2. #2
    Tom Ogilvy
    Guest

    RE: Code Troubles

    Public Sub AutoFill()
    Dim DesiredColumn As Range
    Dim FoundRow As Range
    Dim RowNumber As Long
    Dim ws As Worksheet
    Set ws = Worksheets("LookUpLists")

    'Specifies the desired column as the Description Column
    Set DesiredColumn = ws.Range("f2:F1100")

    'Searches for user's entry into Description Combobox
    Set FoundRow = DesiredColumn.Find( _
    What:=cboDescription.Value, _
    After:=Range("f2"), _
    Lookin:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, _
    MatchCase:=False)
    if not foundrow is nothing then

    RowNumber = FoundRow.Row
    cboMfgrNumber.Value = ws.Cells(RowNumber, 7).Value
    cboPacNumber.Value = ws.Cells(RowNumber, 8).Value
    End if
    End Sub

    --
    regards,
    Tom Ogilvy

    "merritts" wrote:

    >
    > Hi,
    >
    > I am attempting to write code that will take a comboBox selection and
    > then autofill other combo boxes with related selections (in the same
    > row on a lookuplist). I believe i have the idea correct, but i am
    > struggling with actual implementation. Any and all comments and
    > suggestions are greatly appreciated.
    >
    >
    > Code:
    > --------------------
    > Private Sub AutoFill()
    > Dim DesiredColumn As Range
    > Dim RoundRow As Range
    > Dim RowNumber As Range
    > Dim ws As Worksheet
    > Set ws = Worksheets("LookUpLists")
    >
    > 'Specifies the desired column as the Description Column
    > Set DesiredColumn = ws.Range(f2, F1100)
    >
    > 'Searches for user's entry into Description Combobox
    > Set FoundRow = DesiredColumn.Find(cboDescription.Value, f2, xlValues, , xlByColumns)
    >
    > 'Specifies Row # of users selection
    > Set RowNumber = FoundRow.Row
    >
    > 'Assigns the values from the accompaning columns to the combo box value
    > cboMfgrNumber.Value = ws.Cells(RowNumber, 7).Value
    > cboPacNumber.Value = ws.Cells(RowNumber, 8).Value
    >
    > End Sub
    > --------------------
    >
    >
    > --
    > merritts
    > ------------------------------------------------------------------------
    > merritts's Profile: http://www.excelforum.com/member.php...o&userid=35803
    > View this thread: http://www.excelforum.com/showthread...hreadid=564838
    >
    >


  3. #3
    Registered User
    Join Date
    06-26-2006
    Posts
    16
    Tom, thanks for all your help!

    The code doesnt seem to work. I select an entry in one combo box and the others remain blank and the desired fields are never filled. I was wondering how vba handles calling AutoFill()? Or if my code would even do what i was hoping it to do (i am pretty new to vba so i am going mostly off a couple of books i bought). Thanks again for all your help!

    Also, i changed the ws range to
    Set DesiredColumn = ws.Range("DescriptionList")

    And here is my code in full, if it helps at all.


    Private Sub cmdAdd_Click()
    Dim lRow As Long
    Dim lPart As Long
    Dim ws As Worksheet
    Set ws = Worksheets("zinvrep")
    
    'find first empty row in database
    lRow = ws.Cells(Rows.Count, 1) _
        .End(xlUp).Offset(1, 0).Row
    
    'lPart = Me.txtPart.ListIndex
    
    'check for a part number
    'If Trim(txtPart.Value) = "" Then
     ' Me.txtPart.SetFocus
      'MsgBox "Please enter a part number"
      'Exit Sub
    'End If
    
    'check for a quantity number
    If Trim(txtQty.Value) = "" Then
      Me.txtQty.SetFocus
      MsgBox "Please enter a quantity"
      Exit Sub
    End If
    
    'check for a Description number
    If Trim(cboDescription.Value) = "" Then
      Me.txtQty.SetFocus
      MsgBox "Please select a description"
      Exit Sub
    End If
    
    
    'copy the data to the database
    With ws
      .Cells(lRow, 1).Value = cboPartType.Value
      .Cells(lRow, 2).Value = cboPartClass.Value
      .Cells(lRow, 3).Value = cboDescription.Value
      .Cells(lRow, 6).Value = cboWarehouse.Value
      .Cells(lRow, 7).Value = cboLocation.Value
      .Cells(lRow, 8).Value = cboManufacturer.Value
      .Cells(lRow, 9).Value = cboMfgrNumber.Value
      .Cells(lRow, 12).Value = txtQty.Value
      .Cells(lRow, 13).Value = txtPCBRef.Value
      '.Cells(lRow, 4).Value = txtPart.Value
      .Cells(lRow, 4).Value = cboPacNumber.Value
    
    End With
    
    'clear the data
    cboPartType.Value = ""
    cboPartClass.Value = ""
    cboDescription.Value = ""
    cboWarehouse.Value = ""
    cboLocation.Value = ""
    cboManufacturer.Value = ""
    cboMfgrNumber.Value = ""
    txtQty.Value = ""
    txtPCBRef.Value = ""
    'txtPart.Value = ""
    cboPacNumber.Value = ""
        
    End Sub
    
    Private Sub Label1_Click()
    
    End Sub
    
    'assures that only numbers are input into quantity
    Private Sub txtQty_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case Asc("0") To Asc("9")
        Case Asc("-")
            If InStr(1, txtQty.Text, "-") > 0 Or txtQty.SelStart > 0 Then
                KeyAscii = 0
            End If
        Case Asc(".")
            If InStr(1, txtQty.Text, ".") > 0 Then
                KeyAscii = 0
            End If
        Case Else
            KeyAscii = 0
            MsgBox ("Quantity must be numeric")
    End Select
    End Sub
    
    
    Private Sub cmdClose_Click()
        Unload Me
    End Sub
    
    Private Sub UserForm_Initialize()
    Dim cPartType As Range
    Dim cLoc As Range
    Dim cPartClass As Range
    Dim cWhouse As Range
    Dim cDescription As Range
    Dim cMfgrNumber As Range
    Dim cPacNumber As Range
    Dim ws As Worksheet
    Set ws = Worksheets("LookUpLists")
    
    For Each cPacNumber In ws.Range("PacNumberList")
      With cboPacNumber
        .AddItem cPacNumber.Value
      End With
    Next cPacNumber
    
    For Each cPartType In ws.Range("PartTypeList")
      With cboPartType
        .AddItem cPartType.Value
      End With
    Next cPartType
    
    For Each cLoc In ws.Range("LocationList")
      With cboLocation
        .AddItem cLoc.Value
      End With
    Next cLoc
    
    For Each cMfgrNumber In ws.Range("MfgrNumberList")
      With cboMfgrNumber
        .AddItem cMfgrNumber.Value
      End With
    Next cMfgrNumber
    
    For Each cPartClass In ws.Range("PartClassList")
      With cboPartClass
        .AddItem cPartClass.Value
      End With
    Next cPartClass
    
    For Each cWarehouse In ws.Range("WarehouseList")
      With cboWarehouse
        .AddItem cWarehouse.Value
      End With
    Next cWarehouse
    
    For Each cLoc In ws.Range("ManufacturerList")
      With cboManufacturer
        .AddItem cLoc.Value
      End With
    Next cLoc
    
    For Each cDescription In ws.Range("DescriptionList")
      With cboDescription
        .AddItem cDescription.Value
      End With
    Next cDescription
    
    End Sub
    
    Public Sub AutoFill()
    Dim DesiredColumn As Range
    Dim FoundRow As Range
    Dim RowNumber As Long
    Dim ws As Worksheet
    Set ws = Worksheets("LookUpLists")
    
    'Specifies the desired column as the Description Column
    Set DesiredColumn = ws.Range("DescriptionList")
    
    Set FoundRow = DesiredColumn.Find( _
    What:=cboDescription.Value, _
    After:=Range("f2"), _
    Lookin:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, _
    MatchCase:=False)
    if not foundrow is nothing then
    
    
    RowNumber = FoundRow.Row
    cboMfgrNumber.Value = ws.Cells(RowNumber, 7).Value
    cboPacNumber.Value = ws.Cells(RowNumber, 8).Value
    End If
    End Sub

  4. #4
    Tom Ogilvy
    Guest

    Re: Code Troubles

    Excel doesn't just call autofill. You need to call it yourself using the
    click event of the combobox

    Private Sub cboDescription_Click()
    Autofill
    End Sub

    I would also name it something other than autofill since that is a method of
    the range object.

    --
    Regards,
    Tom Ogilvy



    "merritts" <merritts.2bire5_1153861211.5284@excelforum-nospam.com> wrote in
    message news:merritts.2bire5_1153861211.5284@excelforum-nospam.com...
    >
    > Tom, thanks for all your help!
    >
    > The code doesnt seem to work. I select an entry in one combo box and
    > the others remain blank and the desired fields are never filled. I was
    > wondering how vba handles calling AutoFill()? Or if my code would even
    > do what i was hoping it to do (i am pretty new to vba so i am going
    > mostly off a couple of books i bought). Thanks again for all your
    > help!
    >
    > Also, i changed the ws range to
    > Set DesiredColumn = ws.Range("DescriptionList")
    >
    > And here is my code in full, if it helps at all.
    >
    >
    >
    > Code:
    > --------------------
    > Private Sub cmdAdd_Click()
    > Dim lRow As Long
    > Dim lPart As Long
    > Dim ws As Worksheet
    > Set ws = Worksheets("zinvrep")
    >
    > 'find first empty row in database
    > lRow = ws.Cells(Rows.Count, 1) _
    > .End(xlUp).Offset(1, 0).Row
    >
    > 'lPart = Me.txtPart.ListIndex
    >
    > 'check for a part number
    > 'If Trim(txtPart.Value) = "" Then
    > ' Me.txtPart.SetFocus
    > 'MsgBox "Please enter a part number"
    > 'Exit Sub
    > 'End If
    >
    > 'check for a quantity number
    > If Trim(txtQty.Value) = "" Then
    > Me.txtQty.SetFocus
    > MsgBox "Please enter a quantity"
    > Exit Sub
    > End If
    >
    > 'check for a Description number
    > If Trim(cboDescription.Value) = "" Then
    > Me.txtQty.SetFocus
    > MsgBox "Please select a description"
    > Exit Sub
    > End If
    >
    >
    > 'copy the data to the database
    > With ws
    > .Cells(lRow, 1).Value = cboPartType.Value
    > .Cells(lRow, 2).Value = cboPartClass.Value
    > .Cells(lRow, 3).Value = cboDescription.Value
    > .Cells(lRow, 6).Value = cboWarehouse.Value
    > .Cells(lRow, 7).Value = cboLocation.Value
    > .Cells(lRow, 8).Value = cboManufacturer.Value
    > .Cells(lRow, 9).Value = cboMfgrNumber.Value
    > .Cells(lRow, 12).Value = txtQty.Value
    > .Cells(lRow, 13).Value = txtPCBRef.Value
    > '.Cells(lRow, 4).Value = txtPart.Value
    > .Cells(lRow, 4).Value = cboPacNumber.Value
    >
    > End With
    >
    > 'clear the data
    > cboPartType.Value = ""
    > cboPartClass.Value = ""
    > cboDescription.Value = ""
    > cboWarehouse.Value = ""
    > cboLocation.Value = ""
    > cboManufacturer.Value = ""
    > cboMfgrNumber.Value = ""
    > txtQty.Value = ""
    > txtPCBRef.Value = ""
    > 'txtPart.Value = ""
    > cboPacNumber.Value = ""
    >
    > End Sub
    >
    > Private Sub Label1_Click()
    >
    > End Sub
    >
    > 'assures that only numbers are input into quantity
    > Private Sub txtQty_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    > Select Case KeyAscii
    > Case Asc("0") To Asc("9")
    > Case Asc("-")
    > If InStr(1, txtQty.Text, "-") > 0 Or txtQty.SelStart > 0 Then
    > KeyAscii = 0
    > End If
    > Case Asc(".")
    > If InStr(1, txtQty.Text, ".") > 0 Then
    > KeyAscii = 0
    > End If
    > Case Else
    > KeyAscii = 0
    > MsgBox ("Quantity must be numeric")
    > End Select
    > End Sub
    >
    >
    > Private Sub cmdClose_Click()
    > Unload Me
    > End Sub
    >
    > Private Sub UserForm_Initialize()
    > Dim cPartType As Range
    > Dim cLoc As Range
    > Dim cPartClass As Range
    > Dim cWhouse As Range
    > Dim cDescription As Range
    > Dim cMfgrNumber As Range
    > Dim cPacNumber As Range
    > Dim ws As Worksheet
    > Set ws = Worksheets("LookUpLists")
    >
    > For Each cPacNumber In ws.Range("PacNumberList")
    > With cboPacNumber
    > .AddItem cPacNumber.Value
    > End With
    > Next cPacNumber
    >
    > For Each cPartType In ws.Range("PartTypeList")
    > With cboPartType
    > .AddItem cPartType.Value
    > End With
    > Next cPartType
    >
    > For Each cLoc In ws.Range("LocationList")
    > With cboLocation
    > .AddItem cLoc.Value
    > End With
    > Next cLoc
    >
    > For Each cMfgrNumber In ws.Range("MfgrNumberList")
    > With cboMfgrNumber
    > .AddItem cMfgrNumber.Value
    > End With
    > Next cMfgrNumber
    >
    > For Each cPartClass In ws.Range("PartClassList")
    > With cboPartClass
    > .AddItem cPartClass.Value
    > End With
    > Next cPartClass
    >
    > For Each cWarehouse In ws.Range("WarehouseList")
    > With cboWarehouse
    > .AddItem cWarehouse.Value
    > End With
    > Next cWarehouse
    >
    > For Each cLoc In ws.Range("ManufacturerList")
    > With cboManufacturer
    > .AddItem cLoc.Value
    > End With
    > Next cLoc
    >
    > For Each cDescription In ws.Range("DescriptionList")
    > With cboDescription
    > .AddItem cDescription.Value
    > End With
    > Next cDescription
    >
    > End Sub
    >
    > Public Sub AutoFill()
    > Dim DesiredColumn As Range
    > Dim FoundRow As Range
    > Dim RowNumber As Long
    > Dim ws As Worksheet
    > Set ws = Worksheets("LookUpLists")
    >
    > 'Specifies the desired column as the Description Column
    > Set DesiredColumn = ws.Range("DescriptionList")
    >
    > Set FoundRow = DesiredColumn.Find( _
    > What:=cboDescription.Value, _
    > After:=Range("f2"), _
    > Lookin:=xlValues, _
    > LookAt:=xlWhole, _
    > SearchOrder:=xlByColumns, _
    > SearchDirection:=xlNext, _
    > MatchCase:=False)
    > if not foundrow is nothing then
    >
    >
    > RowNumber = FoundRow.Row
    > cboMfgrNumber.Value = ws.Cells(RowNumber, 7).Value
    > cboPacNumber.Value = ws.Cells(RowNumber, 8).Value
    > End If
    > End Sub
    > --------------------
    >
    >
    > --
    > merritts
    > ------------------------------------------------------------------------
    > merritts's Profile:
    > http://www.excelforum.com/member.php...o&userid=35803
    > View this thread: http://www.excelforum.com/showthread...hreadid=564838
    >




  5. #5
    Registered User
    Join Date
    06-26-2006
    Posts
    16
    Works great! Thanks for all your time and effort i truly appreciate it.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1