Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Zahlen suchen mit ersten zwei Ziffern


Betrifft: Zahlen suchen mit ersten zwei Ziffern von: Philip
Geschrieben am: 31.01.2018 10:22:21

Hallo
Ich habe einen Code mit dem die Spalte F nach Werten durchsuche, diese und andere werte übertrage ich in eine Listbox auf einer Userform.
Nun habe ich bei der Suche ein Problem und zwar würde ich gerne nur die ersten zwei Ziffern der zu suchenden Zahl eingeben und dann alle die mit diesen zwei Ziffern beginnen in die Listbox kopieren.

Beispiel:
Eingabe in Textbox = 32* oder nur 32
ausgabe in Listbox = alle Nummern die mit 32 beginnen. zb 32020300,32020405,30030506

Die Zahlen die zu suchen sind, sind immer 8 stellig.

Der aktuelle Code sucht nur die ganze Eingabe.

Private Sub CommandButton1_Click()
Dim wksQ As Worksheet
Dim lngAnzahl As Long
Dim strKundennummer As String
Dim lngSpalte As Long
Dim rngSuchBereich As Range
Dim vntGesucht As Variant
Dim lngGefundenInZeile As Long
Dim straArray() As String
Dim rngGefunden As Range
Dim lngZeileArray As Long
Dim strFirstAddress As String

Set wksQ = ThisWorkbook.Worksheets("Probenahme")
strKundennummer = Trim(TextBox1.Text)
lngAnzahl = Application.WorksheetFunction.CountIf(wksQ.Columns(6), strKundennummer)
If lngAnzahl < 1 Then
 MsgBox strKundennummer, , "Nicht gefunden"
Else
 ReDim straArray(1 To lngAnzahl, 1 To 9) As String
  
 lngSpalte = 6
 Set rngSuchBereich = wksQ.Columns(lngSpalte)

 vntGesucht = strKundennummer '
 lngGefundenInZeile = 0
  
 Set rngGefunden = rngSuchBereich.Find(What:=vntGesucht, After:=rngSuchBereich.Cells(1), LookIn: _
=xlValues, LookAt:=xlPart)
 
 lngZeileArray = 1
 If Not rngGefunden Is Nothing Then
  strFirstAddress = rngGefunden.Address
  Do
   straArray(lngZeileArray, 1) = wksQ.Cells(rngGefunden.Row, 1)
   straArray(lngZeileArray, 2) = wksQ.Cells(rngGefunden.Row, 2)
   straArray(lngZeileArray, 3) = wksQ.Cells(rngGefunden.Row, 4)
   straArray(lngZeileArray, 4) = wksQ.Cells(rngGefunden.Row, 5)
   straArray(lngZeileArray, 5) = wksQ.Cells(rngGefunden.Row, 6)
   straArray(lngZeileArray, 6) = wksQ.Cells(rngGefunden.Row, 7)
   straArray(lngZeileArray, 7) = wksQ.Cells(rngGefunden.Row, 8)
   straArray(lngZeileArray, 8) = wksQ.Cells(rngGefunden.Row, 13)
   straArray(lngZeileArray, 9) = wksQ.Cells(rngGefunden.Row, 18)
   
   lngZeileArray = lngZeileArray + 1
   Set rngGefunden = rngSuchBereich.FindNext(rngGefunden)
  Loop While Not rngGefunden Is Nothing And rngGefunden.Address <> strFirstAddress
 End If
 ListBox1.Clear
 ListBox1.ColumnCount = 9
 ListBox1.ColumnHeads = False
 ListBox1.List = straArray
 ListBox1.ColumnWidths = -1
 ListBox1.Font.Size = 12

 Label1 = "Anzahl:" & ListBox1.ListCount
End If
End Sub
Gruss Philip

  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Sepp
Geschrieben am: 31.01.2018 10:33:00

Hallo Philip,

probier mal so.

vntGesucht = Replace(strKundennummer, "*", "") & "*"


Set rngGefunden = rngSuchBereich.Find(What:=vntGesucht, After:=rngSuchBereich.Cells(1), _
  LookIn:=xlValues, LookAt:=xlWhole)


Gruß Sepp



  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Philip
Geschrieben am: 31.01.2018 10:41:27

Hallo Sepp

Habe ich Probiert ist jedoch noch nicht die Lösung. Sucht immernoch nach dem ganzen.

Gruss Philip


  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Sepp
Geschrieben am: 31.01.2018 10:51:24

Hallo Philip,

nicht nachvollziehbar, da wirst du wohl eine Beispieltabelle hochladen müssen.

Gruß Sepp



  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Philip
Geschrieben am: 31.01.2018 11:10:18

Hallo
Anbei eine Beispieltabelle, ich habe den Code so wie du geschrieben hast abgeändert.
Hat die Funktion Trim evt. einen Einfluss?

https://www.herber.de/bbs/user/119434.xlsm

Gruss Philip


  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Sepp
Geschrieben am: 31.01.2018 11:34:29

Hallo Philip,

CountIf findet natürlich keinen Teilstring, deshalb hat es nicht funktioniert.

Habe den Code etwas umgebaut.

Private Sub CommandButton1_Click()
Dim wksQ As Worksheet
Dim strKundennummer As String
Dim lngSpalte As Long
Dim rngSuchBereich As Range, rngList As Range, rng As Range
Dim vntGesucht As Variant
Dim lngGefundenInZeile As Long
Dim straArray() As String
Dim rngGefunden As Range
Dim lngZeileArray As Long
Dim strFirstAddress As String

Set wksQ = ThisWorkbook.Worksheets("Tabelle1")
strKundennummer = Trim(TextBox1.Text)
vntGesucht = Replace(strKundennummer, "*", "") & "*"

lngSpalte = 6
Set rngSuchBereich = wksQ.Columns(lngSpalte)

lngGefundenInZeile = 0

Set rngGefunden = rngSuchBereich.Find(What:=vntGesucht, After:=rngSuchBereich.Cells(1), _
  LookIn:=xlValues, LookAt:=xlWhole)
If Not rngGefunden Is Nothing Then
  strFirstAddress = rngGefunden.Address
  Do
    If rngList Is Nothing Then
      Set rngList = rngGefunden
    Else
      Set rngList = Union(rngList, rngGefunden)
    End If
    Set rngGefunden = rngSuchBereich.FindNext(rngGefunden)
  Loop While Not rngGefunden Is Nothing And rngGefunden.Address <> strFirstAddress
End If

If Not rngList Is Nothing Then
  Redim straArray(1 To rngList.Rows.Count, 1 To 9) As String
  For Each rng In rngList
    lngZeileArray = lngZeileArray + 1
    straArray(lngZeileArray, 1) = wksQ.Cells(rngGefunden.Row, 1)
    straArray(lngZeileArray, 2) = wksQ.Cells(rngGefunden.Row, 2)
    straArray(lngZeileArray, 3) = wksQ.Cells(rngGefunden.Row, 4)
    straArray(lngZeileArray, 4) = wksQ.Cells(rngGefunden.Row, 5)
    straArray(lngZeileArray, 5) = wksQ.Cells(rngGefunden.Row, 6)
    straArray(lngZeileArray, 6) = wksQ.Cells(rngGefunden.Row, 7)
    straArray(lngZeileArray, 7) = wksQ.Cells(rngGefunden.Row, 8)
    straArray(lngZeileArray, 8) = wksQ.Cells(rngGefunden.Row, 13)
    straArray(lngZeileArray, 9) = wksQ.Cells(rngGefunden.Row, 18)
  Next
  ListBox1.Clear
  ListBox1.ColumnCount = 9
  ListBox1.ColumnHeads = False
  ListBox1.List = straArray
  ListBox1.ColumnWidths = -1
  ListBox1.Font.Size = 12
  Label1 = "Anzahl:" & ListBox1.ListCount
Else
  ListBox1.Clear
  MsgBox "Kundennummer nicht gefunden!"
End If

End Sub



Gruß Sepp



  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Philip
Geschrieben am: 31.01.2018 13:08:36

Hallo Sepp
Danke für deine Hilfe, der Code funktioniert fast perfekt.
Es wird mir nur gerade die erste gefundene Ziffer in die Listbox kopiert, kannst du mir da noch helfen das auch die anderen Ziffern in der Listbox angezeigt werden.

Gruss Philip


  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Sepp
Geschrieben am: 31.01.2018 16:32:35

Hallo Philip,

sorry, bin gerade dabei, meinen neuen PC aufzusetzen.

Da hab ich einen Fehler gemacht, änder folgenden Teil wie folgt.

  For Each rng In rngList
    lngZeileArray = lngZeileArray + 1
    straArray(lngZeileArray, 1) = wksQ.Cells(rng.Row, 1)
    straArray(lngZeileArray, 2) = wksQ.Cells(rng.Row, 2)
    straArray(lngZeileArray, 3) = wksQ.Cells(rng.Row, 4)
    straArray(lngZeileArray, 4) = wksQ.Cells(rng.Row, 5)
    straArray(lngZeileArray, 5) = wksQ.Cells(rng.Row, 6)
    straArray(lngZeileArray, 6) = wksQ.Cells(rng.Row, 7)
    straArray(lngZeileArray, 7) = wksQ.Cells(rng.Row, 8)
    straArray(lngZeileArray, 8) = wksQ.Cells(rng.Row, 13)
    straArray(lngZeileArray, 9) = wksQ.Cells(rng.Row, 18)
  Next
Gruß Sepp


  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Philip
Geschrieben am: 31.01.2018 19:08:08

Hallo Sepp
Danke dir und viel spass mit deinem neuen PC.
Ich habe den Code zwar noch nicht Probieren können aber habe sie mal am tel verglichen, ist das nicht genau das selbe?
Gruss philip


  

Betrifft: AW: Zahlen suchen mit ersten zwei Ziffern von: Sepp
Geschrieben am: 31.01.2018 20:42:11

Hallo Philip,

nein, den zuerst bezog sich .Row auf den falschen Range.

Gruß Sepp



Beiträge aus dem Excel-Forum zum Thema "Zahlen suchen mit ersten zwei Ziffern"