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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Auf zwei Tabellen suchen


Betrifft: Auf zwei Tabellen suchen von: Philip
Geschrieben am: 18.01.2018 13:47:00

Hallo
Ich habe einen Code der mir auf einer Tabelle nach einer Eingabe sucht, nun möchte ich diese suche erweitern au eine zweite Tabelle, ich bringe es jedoch nicht zustande dass es läuft.

Sub Suchen()
Dim rng As Range
Set rng = Sheets("Tabelle1").Range("A4:A250").Find(What:=Range("F4:F500"), Lookat:=xlWhole,  _
LookIn:=xlValues)
If Not rng Is Nothing Then
    Exit Sub
Else
    MsgBox "Kein Duplikat entdeckt."
End If
End Sub

Müsste auf Tabelle2 Zellen A5-A100 durchsuchen

Gruss Philip

  

Betrifft: What:=Range("F4:F500"), von: Rudi Maintaire
Geschrieben am: 18.01.2018 14:05:21

Hallo,
du kannst nur nach einem Wert suchen!

Gruß
Rudi


  

Betrifft: Geht gar nicht von: Philip
Geschrieben am: 18.01.2018 14:16:59

Hallo
Das hat wohl was!!!
In der Spalte F gebe ich einen Text ein und nach dem soll auf den anderen Tabellen in den Spalten A gesucht werden.

Tabelle1= Suchwort in Spalte F, wird fortlaufend erweitert
Tabelle2+Tabelle3 ist die Spalte A zu durchsuchen.

Gruss Philip


  

Betrifft: AW: Geht gar nicht von: Rudi Maintaire
Geschrieben am: 18.01.2018 14:34:15

teste mal:

Sub Suchen()
  Dim rngF As Range, rngC As Range, bolNotFound As Boolean
  For Each rngC In Range("F4:F500").SpecialCells(xlCellTypeConstants)
    Set rngF = Sheets("Tabelle1").Range("A4:A250").Find _
        (What:=rngC, Lookat:=xlWhole, LookIn:=xlValues)
    bolNotFound = rngF Is Nothing
    Set rngF = Sheets("Tabelle2").Range("A4:A250").Find _
        (What:=rngC, Lookat:=xlWhole, LookIn:=xlValues)
    bolNotFound = bolNotFound Or rngF Is Nothing
    If Not bolNotFound Then
      MsgBox "Duplikat in " & rngC.Address
      Exit Sub
    End If
  Next rngC
End Sub

Gruß
Rudi


  

Betrifft: AW: Geht gar nicht von: Philip
Geschrieben am: 18.01.2018 14:45:53

Hallo

Ich habe versucht den Code zu starten jedoch gib er mir einen Laufzeitfehler "keine Zelle gefunden".

Gruss Philip


  

Betrifft: AW: Geht gar nicht von: Rudi Maintaire
Geschrieben am: 18.01.2018 15:14:06

dann hast du keine Werte oder nur Formeln in F4:F500


  

Betrifft: AW: Geht gar nicht von: Philip
Geschrieben am: 18.01.2018 15:29:13

Hallo
Ich glaube ich weiss wo das Problem liegt, ich habe mich zu wenig deutlich ausgedrückt.
Die Zellen F4 bis F500 werden laufend gefüllt, sprich diese sind leer.
Es sollte erst gesucht werden sobald ich einen eintrag mache und dann auch nur ob dieser vorhanden ist.

Gruss Philip


  

Betrifft: AW: Auf zwei Tabellen suchen von: Daniel
Geschrieben am: 18.01.2018 14:37:28

Hi

wie Rudi schon schrieb, du kannst immer nur nach einem Wert gleichzeitig suchen, dh dein Parameter nach WHAT:= darf nur eine Zelle groß sein.
Willst du da nach mehreren Werten suchen, brauchst du eine Schleife über die Zellen.

Wenn du auf mehreren Blättern gleichzeitig suchen willst, dann geht das auch, aber nur wenn der Suchbereich auf allen Blättern der gleiche ist.

Sheets(Array("Tabelle1", "Tabelle2")).Select
Range("A4:A500").Select
set rng = Selection.Find(what:=Range("F4").Value, ...)
hast du aber unterschiedliche Zellbereiche auf den Blättern, musst du in jedem Blatt separat suchen.

Gruß Daniel


  

Betrifft: AW: Auf zwei Tabellen suchen von: Philip
Geschrieben am: 18.01.2018 14:49:19

Hallo

Der Suchbereich kann auf bei Tabellen der selbe sein.
Kannst du mir das in meinen Code einfügen? Ich kenn mich mit Schleifen überhaupt nicht aus und aus deinem beispiel werde ich nicht schlau.

Gruss Philip


  

Betrifft: AW: Auf zwei Tabellen suchen von: Daniel
Geschrieben am: 18.01.2018 15:04:31

Hi
zunächst einmal, du hast das hier als Suchbegriff angegeben:
What:=Range("F4:F500"),
1. auf welchem Tabellenblatt stehen die Suchbegriffe?
2. willst wirklich im Extremfall 497 Messageboxen wegklicken?

wäre es nicht geschickter, neben die Suchbegriffe einfach eine Funktion mit ZählenWenn zu schreiben?

also Beispielsweise diese Formel in G4:G500:

=Wenn(G4="";"";Wenn(ZählenWenn(Tabelle1!$A$1:$A$500;G4)+ZählenWenn(Tabelle2!$A$1:$A$500;G4); ""Duplikat gefunden"";"")) 

Die formel kannst du ja auch per Makro eintragen lassen.

Gruß Daniel


  

Betrifft: AW: Auf zwei Tabellen suchen von: Philip
Geschrieben am: 18.01.2018 15:17:25

Hallo
Das Problem ist das ich wenn der Suchbegriff nicht vorhanden ist eigentlich eine Userform öffnen will.
Deshalb ist es mit einer Formel nicht lösbar...

In Tabelle1 gebe ich den Suchbegriff in eine Zelle zwischen F4:F500 ein und am besten währe wenn er nur den Suchbegriff den ich gerade eingebe sucht, natürlich möchte ich nicht unbedingt 497 MsgBoxen wegklicken.

Gruss


  

Betrifft: AW: Auf zwei Tabellen suchen von: Daniel
Geschrieben am: 18.01.2018 15:30:46

Hi
ok, dann musst du das ganz anders angehen.
du brauchst ein Makro, welches automatisch anspringt, wenn du einen Wert in eine Zelle eingibst und dann diesen Wert suchst.

Wenn du nicht allzuviele Zellbereiche durchsuchen musst, würde ich jeden extra programmieren.
zum suchen würde ich auch Worksheetfunction.countif (entspricht ZählenWenn) nehmen, dass ist da etwas einfacher zu programmieren.

dieser Code muss in das Modul des Tabellenblatts, in welchem du die Werte in F5:F500 eingibst:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Gefunden As Long

If Intersect(Target, Range("F4:F500")) Is Nothing Then Exit Sub
For Each Zelle In Intersect(Target, Range("F4:F500"))
   If Zelle.Value <> "" Then
      Gefunden = WorksheetFunction.CountIf(Sheets("Tabelle1").Range("A1:A500"), Zelle.Value)
      If Gefunden = 0 Then _
         Gefunden = WorksheetFunction.CountIf(Sheets("Tabelle2").Range("A1:A500"), Zelle.Value)
        
      If Gefunden = 0 Then UserformX.Show
    End If
Next
End Sub
Gruß Daniel


  

Betrifft: AW: Auf zwei Tabellen suchen von: Philip
Geschrieben am: 18.01.2018 15:37:21

Hallo

Supper das funktioniert einwand frei so.
Perfekt, danke dir.

Gruss Philip


Beiträge aus dem Excel-Forum zum Thema "Auf zwei Tabellen suchen"