20.02.2021, 10:59
Hallo
freut mich das dir meine Arbeit gefaellt und ja, so klein das Makro ist, es ist ein Universal Code der sich automatisch anpasst!
Mit LastZell suche ich die letzte Zeile in Spalte A, und mit Colums(3).Find durchsuche ich die ganze Spalte C nach dem Wert.
Es ist ein grosser Vorteil wenn man selbst VBA Kenntnisse hat und kann sich das Makro zum Auswerten selbst anpassen.
Hier noch ein Bonbon für dich, ein Makro mit dem du in weiteren Tabellen suchen und ausfüllen kannst. Du must dazu nur in Const TbX den Namen der Tabelle angeben. Gesucht wird hier in Spalte A, sonst must du die Spalte umschreiben. Vergiss bei Find bitte nicht ggf. auch die Startzelle [a1] mit zu aendern. sonst kommt Laufzeitfehler!
mfg Gast 123
Nachtrag Ich verwende hier eine With Klammer und Set Anweisung für Tabelle1. Bei der With Klammer musst du alles was sich auf diese Klammer bezieht vorne mit einem Punkt versehen, z.B. .Cells(1,2) oder .Range("xxx"). Wenn du den vergisst nimmt Excel die Zelle oder den Range vom gerade aktiven Blatt. Standard Wissen in VBA, es erleichtert das Programmieren
freut mich das dir meine Arbeit gefaellt und ja, so klein das Makro ist, es ist ein Universal Code der sich automatisch anpasst!
Mit LastZell suche ich die letzte Zeile in Spalte A, und mit Colums(3).Find durchsuche ich die ganze Spalte C nach dem Wert.
Es ist ein grosser Vorteil wenn man selbst VBA Kenntnisse hat und kann sich das Makro zum Auswerten selbst anpassen.
Hier noch ein Bonbon für dich, ein Makro mit dem du in weiteren Tabellen suchen und ausfüllen kannst. Du must dazu nur in Const TbX den Namen der Tabelle angeben. Gesucht wird hier in Spalte A, sonst must du die Spalte umschreiben. Vergiss bei Find bitte nicht ggf. auch die Startzelle [a1] mit zu aendern. sonst kommt Laufzeitfehler!
mfg Gast 123
Code:
Option Explicit '20.2.2021 Gast 123 für Clever Forum
Dim AC As Range, lz1 As Long
Const ExTab = "Tabelle1"
'Suchen und notieren in weiteren Tabellen
Sub TabelleX_Suchen_und_ersetzen()
Dim rFind As Range, n As Long
Dim Adr1 As String, m As Long
Dim TbX As Worksheet, lz2 As Long
Set TbX = Worksheets(ExTab)
With Worksheets("SQLiteAdmin")
'LastZell in Spalte A suchen
lz1 = .Cells(Rows.Count, 1).End(xlUp).Row
lz2 = TbX.Cells(Rows.Count, 1).End(xlUp).Row
'Bereich Spalte D+E löschen
TbX.Range("D2:E" & lz1).ClearContents
Application.ScreenUpdating = False
'Suche RoutenNummer in Spalte C
For Each AC In .Range("A2:A" & lz1)
Application.StatusBar = AC.Row & " / " & lz1 & " / " & n
Set rFind = TbX.Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
Adr1 = rFind.Address
Do
n = n + 1 'gedunden Daten zaehlen
'Text aus Spalte B nach D ausgeben
rFind.Offset(0, 2) = AC.Offset(0, 1)
'weitersuchen (falls mehrfach vorhanden)
Set rFind = TbX.Columns(1).FindNext(rFind)
Loop Until rFind.Address = Adr1
End If
Next AC
End With
Application.StatusBar = Empty
Application.ScreenUpdating = True
MsgBox n & " gefunden Daten"
End Sub
Nachtrag Ich verwende hier eine With Klammer und Set Anweisung für Tabelle1. Bei der With Klammer musst du alles was sich auf diese Klammer bezieht vorne mit einem Punkt versehen, z.B. .Cells(1,2) oder .Range("xxx"). Wenn du den vergisst nimmt Excel die Zelle oder den Range vom gerade aktiven Blatt. Standard Wissen in VBA, es erleichtert das Programmieren