Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mehrere Begriffe in einem Makro suchen

mehrere Begriffe in einem Makro suchen
11.12.2019 10:15:25
Peter
Hallo,
ich habe ein Makro mit dem ich einen Begriff in einer Spalte einer Tabelle suche und den ersten gefundenen Begriff auslese. Diese ausgelesenen Werte soll später in eine andere Tabelle übertragen werden.
Nun habe ich, jedoch drei verschiedene Werte, welche in der gleichen Tabelle und gleicher Spalte gesucht werden.
Dies drei Werte sollen ausgelesen werden und später in eine andere Tabelle übertragen werden.
Mein bisheriges Makro:

Sub Kontodaten_in_Worddaten_für_Konto3()
Dim wb As Workbook 'benötigt für dieses Workbook
Dim wksH As Worksheet 'benötigt für Hilfstabelle
Dim wksKd As Worksheet 'benötigt für Kontodaten
Dim wksWd As Worksheet 'benötigt für Worddaten
Dim AnzKtoDat As Object 'benötigt für Anzahl der Konten in Hilfstabelle
'Dim Kto1 As Object 'benötigt für 1. Konto in Kontodaten
'Dim Kto2 As Object 'benötigt für 2. Konto in Kontodaten
Dim Kto3 As Object 'benötigt für 3. Konto in Kontodaten
Set wb = ThisWorkbook
Set wksH = wb.Worksheets("Hilfstabelle")
Set wksKd = wb.Worksheets("Kontodaten")
Set wksWd = wb.Worksheets("Worddaten")
Set AnzKtoDat = wksH.Range("Q2") 'Anzahl der vorhandenen Kontoarten
'''Set Kto1 = wksH.Range("A2") 'Suchbegriff für Kontodaten 1. Konto
'''Set Kto2 = wksH.Range("A3") 'Suchbegriff für Kontodaten 2. Konto
Set Kto3 = wksH.Range("A4") 'Suchbegriff für Kontodaten 3. Konto
'''Dim WertKtoArtKto1 As String
'''Dim WertIBANKto1 As String
'''Dim WertKtoNrKto1 As String
'''Dim WertKtoArtKto2 As String
'''Dim WertIBANKto2 As String
'''Dim WertKtoNrKto2 As String
Dim WertKtoArtKto3 As String
Dim WertIBANKto3 As String
Dim WertKtoNrKto3 As String
Dim i As Long 'benötigt für Durchlauf von Spalte B in Kontodaten
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2) = Kto3 Then
WertKtoArtKto3 = Cells(i, 2)
Debug.Print WertKtoArtKto3
WertIBANKto3 = Cells(i, 2).Offset(0, 2)
Debug.Print WertIBANKto3
WertKtoNrKto3 = Cells(i, 2).Offset(0, 4)
Debug.Print WertKtoNrKto3
Exit Sub
Else
'' Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Select 'letzte leere zelle
'' MsgBox "Wert nicht vorhanden"
End If
Next
'Set aufheben
'Set Kto1 = Nothing
'Set Kto2 = Nothing
Set Kto3 = Nothing
Set AnzKtoDat = Nothing
Set wksH = Nothing
Set wksKd = Nothing
Set wksWd = Nothing
Set wb = Nothing
End Sub

Vielen Dank für eure Hilfe.
Gruss
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Begriffe in einem Makro suchen
11.12.2019 11:29:11
M.
Hallo Peter,
du hast ja schon die Suchbegriffe definiert. Du kannst jetzt einfach deine Abfrageschleife mit weiteren if ... then ... else Schleifen erweitern (beginnend hinter deinem Else).
Aber ich würde dies nicht empfehlen, so zu programmieren wird schnell sehr unübersichtlich. Ich würde es mit select case machen. Schau mal hier: https://www.herber.de/mailing/vb/html/vastmselectcasex.htm
Grüsse
Michael
AW: erledigt
11.12.2019 11:59:37
Peter
Hallo Michael,
besten Dank für Deine Hilfe.
Werde mir das mit dem Case mal genauer ansehen.
Gruss
Peter
Anzeige
AW: Verwendung von Arrays für die 3 Konten
11.12.2019 12:32:28
Arrays
Hallo Peter,
hatte mich mit deinem Makro auch beschäfftigt.
Mein Vorschlag:
Verwende für die Variablen, die die 3 Konten betreffen Variablen, die als Array mit 3 Werten deklarier werden.
Dann kannst du die 3 gesuchten Kontoarten in einer weiteren For-next-Schleife abarbeiten.
Die ermittelten Werte kannst du dann in einer Schleife in das Blatt mit den Worddaten übertragen.
LG
Franz
Sub Kontodaten_in_Worddaten_für_Konten()
Dim wb As Workbook              'benötigt für dieses Workbook
Dim wksH As Worksheet           'benötigt für Hilfstabelle
Dim wksKd As Worksheet          'benötigt für Kontodaten
Dim wksWd As Worksheet          'benötigt für Worddaten
Dim AnzKtoDat As Object         'benötigt für Anzahl der Konten in Hilfstabelle
Dim Kto(1 To 3) As Range       'benötigt für 3 Konto in Kontodaten
Dim WertKtoArtKto(1 To 3) As String
Dim WertIBANKto(1 To 3) As String
Dim WertKtoNrKto(1 To 3) As String
Dim i As Long                       'benötigt für Durchlauf von Spalte B in Kontodaten
Dim iKonto As Integer               'benötigt für Durchlauf der Kontoarten
Set wb = ThisWorkbook
Set wksH = wb.Worksheets("Hilfstabelle")
Set wksKd = wb.Worksheets("Kontodaten")
Set wksWd = wb.Worksheets("Worddaten")
Set AnzKtoDat = wksH.Range("Q2")    'Anzahl der vorhandenen Kontoarten
'Zellen mit den zu suchenden Konten setzen (A2 bis A4 in der Hilfstabelle)
For iKonto = 1 To UBound(Kto)
Set Kto(iKonto) = wksH.Range("A2").Offset(iKonto - 1, 0) 'Suchbegriff für Kontodaten
Next
For iKonto = 1 To UBound(Kto)
With wksKd
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(i, 2) = Kto(iKonto).Value Then
WertKtoArtKto(iKonto) = .Cells(i, 2)
Debug.Print WertKtoArtKto(iKonto)
WertIBANKto(iKonto) = .Cells(i, 2).Offset(0, 2)
Debug.Print WertIBANKto(iKonto)
WertKtoNrKto(iKonto) = .Cells(i, 2).Offset(0, 4)
Debug.Print WertKtoNrKto(iKonto)
Exit For
End If
Next i
End With
If WertKtoArtKto(iKonto) = "" Then
MsgBox "Wert nicht vorhanden für: " & Kto(iKonto).Value
End If
Next iKonto
'Werte übertragen nach Worsdaten - beispielhaft
i = 2 'Startzeile für das Eintragen der Daten zu den gefunden Kontoarten
For iKonto = 1 To UBound(Kto)
If WertKtoArtKto(iKonto) = "" Then
'Aktion = ? wenn zu Konto-Art kein Wert gefunden wurde
Else
wksWd.Cells(i, 1).Value = WertKtoArtKto(iKonto)
wksWd.Cells(i, 2).Value = WertIBANKto(iKonto)
wksWd.Cells(i, 3).Value = WertKtoNrKto(iKonto)
i = i + 1
End If
Next iKonto
'Set aufheben
For iKonto = 1 To UBound(Kto)
Set Kto(iKonto) = Nothing
Next iKonto
Set AnzKtoDat = Nothing
Set wksH = Nothing
Set wksKd = Nothing
Set wksWd = Nothing
Set wb = Nothing
End Sub

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige