dimanche 19 juin 2016

The VBA comboBox dosen't pick words in the middle of string when I start typing

Am totally new in this field and started getting so interested in codin generally and VBS specifically. I found this code online (AGAIN this is not my code) and tried to modify it to look for employees name instead... The problem that I have now is, if I type inside search box the second name or last name or any other word inside the string row that is isaved in amy Excel sheet it doesn't pick it and shows nothing! But when I type the first letter of the first word in the string then it will show me the whole sentence/string..... My question is how can I locate/get whatever word or letter I type regardless the location inside the string? Thanks The code is:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''                                              OM
''
''                                 www.sanketham.webs.com
''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit

Dim blnNew As Boolean
Dim TRows, i As Long

Private Sub cmdClose_Click()
    If cmdClose.Caption = "Close" Then
        Unload Me
    Else
        cmdClose.Caption = "Close"
        cmdNew.Enabled = True
        cmdDelete.Enabled = True

    End If
End Sub

Private Sub cmdDelete_Click()
    TRows = Worksheets("Data").Range("A1").CurrentRegion.Rows.Count
    Dim strDel
    strDel = MsgBox("Delete ?", vbYesNo, "Delete")
    If strDel = vbYes Then
        For i = 2 To TRows
            If Trim(Worksheets("Data").Cells(i, 1).Value) = Trim(ComboBox1.Text) Then

              '  Sheet1.Range(i & ":" & i).Delete
                Worksheets("Data").Range(i & ":" & i).Delete

                txtEmpNo.Text = ""
                txtEmpName.Text = ""
                txtAdd1.Text = ""
                txtAdd2.Text = ""
                txtAdd3.Text = ""
                txtTel.Text = ""
                txtDesignation.Text = ""
                Call prcomboboxFill

                Exit For
            End If
        Next i
        If Trim(ComboBox1.Text) = "" Then
            cmdSave.Enabled = False
            cmdDelete.Enabled = False
        Else
            cmdSave.Enabled = True
            cmdDelete.Enabled = True
        End If
        cmdNew.Enabled = True
        cmdClose.Caption = "Close"


    End If

    If Trim(txtEmpNo.Text) = "" Then
        cmdSave.Enabled = False
        cmdDelete.Enabled = False
        Frame2.Enabled = False

    Else
        cmdSave.Enabled = True
        cmdDelete.Enabled = True
        Frame2.Enabled = True

    End If
End Sub

Private Sub cmdNew_Click()
    blnNew = True
    txtEmpNo.Text = ""
    txtEmpName.Text = ""
    txtAdd1.Text = ""
    txtAdd2.Text = ""
    txtAdd3.Text = ""
    txtTel.Text = ""
    txtDesignation.Text = ""

    cmdClose.Caption = "Cancel"
    cmdNew.Enabled = False
    cmdDelete.Enabled = False
    cmdSave.Enabled = True
    Frame2.Enabled = True
End Sub

Private Sub cmdSave_Click()
    If Trim(txtEmpNo.Text) = "" Then
        MsgBox "Enter Emp. No.", vbCritical, "Save"
        txtEmpNo.SetFocus
        Exit Sub
    End If
    Call prSave
    cmdClose.Caption = "Close"
    cmdNew.Enabled = True
    ThisWorkbook.Save

End Sub
Private Sub prSave()
     ''''' Save the Data
    If blnNew = True Then
        TRows = Worksheets("Data").Range("A1").CurrentRegion.Rows.Count
        With Worksheets("Data").Range("A1")
            .Offset(TRows, 0).Value = txtEmpNo.Text
            .Offset(TRows, 1).Value = txtEmpName.Text
            .Offset(TRows, 2).Value = txtAdd1.Text
            .Offset(TRows, 3).Value = txtAdd2.Text
            .Offset(TRows, 4).Value = txtAdd3.Text
            .Offset(TRows, 5).Value = txtTel.Text
            .Offset(TRows, 6).Value = txtDesignation.Text
         End With
            txtEmpNo.Text = ""
            txtEmpName.Text = ""
            txtAdd1.Text = ""
            txtAdd2.Text = ""
            txtAdd3.Text = ""
            txtTel.Text = ""
            txtDesignation.Text = ""
            Call prcomboboxFill
     Else
        For i = 2 To TRows
            If Trim(Worksheets("Data").Cells(i, 1).Value) = Trim(ComboBox1.Text) Then
                Worksheets("Data").Cells(i, 1).Value = txtEmpNo.Text
                Worksheets("Data").Cells(i, 2).Value = txtEmpName.Text
                Worksheets("Data").Cells(i, 3).Value = txtAdd1.Text
                Worksheets("Data").Cells(i, 4).Value = txtAdd2.Text
                Worksheets("Data").Cells(i, 5).Value = txtAdd3.Text
                Worksheets("Data").Cells(i, 6).Value = txtTel.Text
                Worksheets("Data").Cells(i, 7).Value = txtDesignation.Text
                txtEmpNo.Text = ""
                txtEmpName.Text = ""
                txtAdd1.Text = ""
                txtAdd2.Text = ""
                txtAdd3.Text = ""
                txtTel.Text = ""
                txtDesignation.Text = ""
                Exit For
            End If
        Next i
      End If
    blnNew = False

    If Trim(txtEmpNo.Text) = "" Then
        cmdSave.Enabled = False
        cmdDelete.Enabled = False
        Frame2.Enabled = False
    Else
        cmdSave.Enabled = True
        cmdDelete.Enabled = True
        Frame2.Enabled = True
    End If
End Sub

Private Sub cmdSearch_Click()
    blnNew = False
    txtEmpNo.Text = ""
    txtEmpName.Text = ""
    txtAdd1.Text = ""
    txtAdd2.Text = ""
    txtAdd3.Text = ""
    txtTel.Text = ""
    txtDesignation.Text = ""

    TRows = Worksheets("Data").Range("A1").CurrentRegion.Rows.Count
    For i = 2 To TRows
        If Trim(Worksheets("Data").Cells(i, 1).Value) = Trim(ComboBox1.Text) Then

            txtEmpNo.Text = Worksheets("Data").Cells(i, 1).Value
            txtEmpName.Text = Worksheets("Data").Cells(i, 2).Value
            txtAdd1.Text = Worksheets("Data").Cells(i, 3).Value
            txtAdd2.Text = Worksheets("Data").Cells(i, 4).Value
            txtAdd3.Text = Worksheets("Data").Cells(i, 5).Value
            txtTel.Text = Worksheets("Data").Cells(i, 6).Value
            txtDesignation.Text = Worksheets("Data").Cells(i, 7).Value

            Exit For
        End If
    Next i
    If Trim(txtEmpNo.Text) = "" Then
        cmdSave.Enabled = False
        cmdDelete.Enabled = False
        Frame2.Enabled = False
    Else
        cmdSave.Enabled = True
        cmdDelete.Enabled = True
        Frame2.Enabled = True
    End If
End Sub

Private Sub ComboBox1_Change()



End Sub


Private Sub UserForm_Click()

End Sub
Private Sub prcomboboxFill()
ComboBox1.Clear
TRows = Worksheets("Data").Range("A1").CurrentRegion.Rows.Count
For i = 2 To TRows
ComboBox1.AddItem Worksheets("Data").Cells(i, 1).Value
Next i
End Sub

Private Sub Userform_Initialize()
Call prcomboboxFill

cmdSave.Enabled = False
cmdDelete.Enabled = False
End Sub

3 commentaires:

  1. this is not work
    ******** txtram.Text = "" ****** found compile error variable not define
    Private Sub cmdNew_Click()
    blnNew = True
    txtEmpNo.Text = ""
    txtEmpName.Text = ""
    txtAdd1.Text = ""
    txtAdd2.Text = ""
    txtAdd3.Text = ""
    txtTel.Text = ""
    txtDesignation.Text = ""
    txtram.Text = ""

    cmdClose.Caption = "Cancel"
    cmdNew.Enabled = False
    cmdDelete.Enabled = False
    cmdSave.Enabled = True
    Frame2.Enabled = True
    End Sub

    RépondreSupprimer
  2. pls help me bro . i had try 10 more days....

    RépondreSupprimer
  3. i had one more text box add
    but
    this is not work
    ******** txtram.Text = "" ****** found compile error variable not define
    Private Sub cmdNew_Click()
    blnNew = True
    txtEmpNo.Text = ""
    txtEmpName.Text = ""
    txtAdd1.Text = ""
    txtAdd2.Text = ""
    txtAdd3.Text = ""
    txtTel.Text = ""
    txtDesignation.Text = ""
    txtram.Text = ""

    cmdClose.Caption = "Cancel"
    cmdNew.Enabled = False
    cmdDelete.Enabled = False
    cmdSave.Enabled = True
    Frame2.Enabled = True
    End Sub

    RépondreSupprimer