Hello
Can anyone help me to refine the AutoComplete Search Comobbox from VBA to VB.NET19
Following is the code in VBA-Excel for Searching particular item from a Range of Column and same being loaded in the Combobox2.
In VBA Excel Combobox as Object had many limited features and so smoothness was not seen while executing the same.
But under the circumstances Functionalbe in VBA
The same type of adaption but with some beautiful functionality i want to derive for a combobox ie data from column B of a worksheet in to Combbobox of .Net Userform and respective row data into respective textbox.
Following VBA Code uploads the Data from Col B of Worksheet 5 in Combobox2 of VBA userform
With ComboBox2_Click Event it displays the respective data of diffrent columns into respective Textboxes of that particular row
Now What i desire is that if same thing can be adapted in much better method with smooth flow in VB.NET will always be grateful to you.
I tired the Following code in VB.NET19 adapted from https://www.codeproject.com/Articles...oBox-in-VB-Net
somehow succeded to get the Range of Column B values in ComboBox2 but missed to get respective data of different columns into respective Textboxes of that particular row in respective textboxes
Q1. How to get respective data from ComboBox when Selectedchange_event triggered or When Clicked on the item of combobox into respective textboxes from Worksheet
Q2. Any beautiful ways for searching items in Combobox and hiliting the same while being searched
Thankx in advance
SamD
Thread 2: 892141 :
11
Can anyone help me to refine the AutoComplete Search Comobbox from VBA to VB.NET19
Following is the code in VBA-Excel for Searching particular item from a Range of Column and same being loaded in the Combobox2.
In VBA Excel Combobox as Object had many limited features and so smoothness was not seen while executing the same.
But under the circumstances Functionalbe in VBA
The same type of adaption but with some beautiful functionality i want to derive for a combobox ie data from column B of a worksheet in to Combbobox of .Net Userform and respective row data into respective textbox.
Following VBA Code uploads the Data from Col B of Worksheet 5 in Combobox2 of VBA userform
With ComboBox2_Click Event it displays the respective data of diffrent columns into respective Textboxes of that particular row
Code:
VBA Code
Option Explicit
Public FullList As Variant, lastRow As Long
Public IsArrow As Boolean
Private Sub UserForm_Initialize()
Dim Wks As Worksheet, myArray As Variant
Dim lastRow As Long
Set Wks = Worksheets("SHEET5")
lastRow = Worksheets("SHEET5").Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("SHEET5")
.Activate
myArray = .Range("A2:P" & lastRow).Value
ComboBox3.List() = .Range(Cells(2, 1), Cells(lastRow, 1)).Value
ComboBox2.List() = .Range(Cells(2, 2), Cells(lastRow, 2)).Value
End With
End Sub
Private Sub ComboBox2_Change()
Dim recFound As Boolean, totRowsCount As Long
Dim i As Long
lastRow = Worksheets("SHEET5").Cells(Rows.Count, 1).End(xlUp).Row
With ComboBox2
If Not IsArrow Then .List = Worksheets("SHEET5").Range("A2").CurrentRegion.Offset(1, 1).Value
If .ListIndex = -1 And Len(.Text) Then
For i = .ListCount - 1 To 0 Step -1
If InStr(1, .List(i), .Text, 1) = 0 Then .RemoveItem i
Next i
.DropDown
End If
If ComboBox2.ListCount = 0 Then
MsgBox "Item Does Not Exisits"
End If
End With
End Sub
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
FullList = Worksheets("SHEET5").Range("A2").CurrentRegion.Offset(1, 1).Value
IsArrow = KeyCode = vbKeyUp Or KeyCode = vbKeyDown
If KeyCode = vbKeyReturn Then ComboBox2.List = FullList
End Sub
Private Sub ComboBox2_Click()
Dim idx As Long
idx = ComboBox2.ListIndex
If idx <> -1 Then
ComboBox3.Text = Worksheets("SHEET5").Range("A" & idx + 2).Value
textBox5.Text = Worksheets("SHEET5").Range("E" & idx + 2).Value
textBox6.Text = Worksheets("SHEET5").Range("F" & idx + 2).Value
End If
End Sub
I tired the Following code in VB.NET19 adapted from https://www.codeproject.com/Articles...oBox-in-VB-Net
somehow succeded to get the Range of Column B values in ComboBox2 but missed to get respective data of different columns into respective Textboxes of that particular row in respective textboxes
Q1. How to get respective data from ComboBox when Selectedchange_event triggered or When Clicked on the item of combobox into respective textboxes from Worksheet
Q2. Any beautiful ways for searching items in Combobox and hiliting the same while being searched
Code:
VB.NET19 CODE
Option Strict On
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Public Class ufComboBoxes
Private Sub ufComboBoxes_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim path As String = "C:\"
Dim strFilename As String = "C:\Trial\Data.xlsx"
Dim appXL As New Microsoft.Office.Interop.Excel.Application()
Dim wbK As Excel.Workbook
Dim wksSht5 As Excel.Worksheet
Dim wksNo As Integer = 1
Dim RngCombo2Cde As Excel.Range
Dim Rngcombo2Arr As String
wbK = appXL.Workbooks.Open(strFilename)
wksSht5 = CType(appXL.Worksheets("SHEET5"), Excel.Worksheet)
RngCombo2Cde = DirectCast(wksSht5.Range("B2:B25"), Excel.Range)
For i As Integer = 1 To RngCombo2Cde.Rows.Count
Dim colCell As Excel.Range = DirectCast(RngCombo2Cde.Rows(i), Excel.Range)
Rngcombo2Arr &= DirectCast(colCell.Value.ToString, String) & ","
Next
Rngcombo2Arr = Rngcombo2Arr.Remove(Rngcombo2Arr.Length - 1, 1)
ComboBox2.Items.AddRange(Rngcombo2Arr.Split(","c))
RngCombo2Cde = Nothing
wksSht5 = Nothing
wbK = Nothing
appXL = Nothing
End Sub
Public Sub AutoCompleteCombo_KeyUp(ByVal cbo As ComboBox, ByVal e As KeyEventArgs)
Dim sTypedText As String
Dim iFoundIndex As Integer
Dim oFoundItem As Object
Dim sFoundText As String
Dim sAppendText As String
'Allow select keys without Autocompleting
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down
Return
End Select
'Get the Typed Text and Find it in the list
sTypedText = cbo.Text
iFoundIndex = cbo.FindString(sTypedText)
'If we found the Typed Text in the list then Autocomplete
If iFoundIndex >= 0 Then
'Get the Item from the list (Return Type depends if Datasource was bound
' or List Created)
oFoundItem = cbo.Items(iFoundIndex)
'Use the ListControl.GetItemText to resolve the Name in case the Combo
' was Data bound
sFoundText = cbo.GetItemText(oFoundItem)
'Append then found text to the typed text to preserve case
sAppendText = sFoundText.Substring(sTypedText.Length)
cbo.Text = sTypedText & sAppendText
'Select the Appended Text
cbo.SelectionStart = sTypedText.Length
cbo.SelectionLength = sAppendText.Length
End If
End Sub
Private Sub ComboBox2_Leave(sender As Object, e As EventArgs) Handles ComboBox2.Leave
Dim recRowView As DataRowView
'Dim recName As DB.tblNameRow
AutoCompleteCombo_Leave(ComboBox2)
'OPTIONAL: Now you can do some extra handling if you want
'Get the Selected Record from my Data Bound Combo (Return Type is DataRowView)
recRowView = ComboBox2.SelectedItem
If recRowView Is Nothing Then Exit Sub
'Display the Name Info (Row Type comes from my bound Dataset)
'recName = recRowView.Row
'lblAccountNum.Text = recName.AccountNum
'lblCompanyName.Text = recName.CompanyName
''''''How to get following values in textbox5 and textbox6 with recRowView
textBox5.Text = Worksheets("SHEET5").Range("E" & idx + 2).Value
textBox6.Text = Worksheets("SHEET5").Range("F" & idx + 2).Value
End Sub
Private Sub ComboBox2_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox2.KeyUp
AutoCompleteCombo_KeyUp(ComboBox2, e)
End Sub
Public Sub AutoCompleteCombo_Leave(ByVal cbo As ComboBox)
Dim iFoundIndex As Integer
iFoundIndex = cbo.FindStringExact(cbo.Text)
cbo.SelectedIndex = iFoundIndex
End Sub
End Class
SamD
Thread 2: 892141 :
11