Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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
Range über alle Tabellenblätter vergleichen
27.07.2023 23:10:49
Stephan
Guten Abend zusammen,

ich habe schon viel hier lesen können und bin eher stiller Teilhaber, aktuell bin ich jedoch auf etwas gestoßen, bei dem ich nicht weiter komme, weshalb ich nun doch mal selbst aktiv schreibe.

Ich habe auf einem Tabellenblatt eine Range("A1:D3"), welche sich auch auf allen anderen Arbeitsblättern wiederfindet. Nun möchte ich mittels VBA testen, ob in den gleichen Zellen der anderen Arbeitsblätter die gleichen Daten vorhanden sind, also ob es in diesem Bereich exakte Kopien gibt.

Mein Code sieht bisher so aus, funktioniert jedoch nicht, vermutlich, weil es nicht möglich ist die gesamte Range auf einmal zu vergleichen?

Sheet(Tabellenname) ist in diesem Fall die ursprüngliche Tabelle, dessen Daten innerhalb der Range mit den Daten innerhalb der gleichen Range auf den anderen Tabellenblättern verglichen werden soll.


Dim WS_Count As Integer
Dim i As Integer

WS_Count = ActiveWorkbook.Worksheets.Count

For i = 1 To WS_Count
If ActiveWorkbook.Worksheets(i).Range("A1:D3") = Sheets(Tabellenname).Range("A1:D3") Then
MsgBox "Dublikat vorhanden! Tabellenblatt " & ActiveWorkbook.Worksheets(i).Name
End If
Next
Dim WS_Count As Integer Dim i As Integer WS_Count = ActiveWorkbook.Worksheets.Count For i = 1 To WS_Count If ActiveWorkbook.Worksheets(i).Range("A1:D3") = Sheets(Tabellenname).Range("A1:D3") Then MsgBox "Dublikat vorhanden! Tabellenblatt " & ActiveWorkbook.Worksheets(i).Name End If Next


Welche einfachen Lösungen habt ihr parat das Problem zu lösen?

Ich danke euch im Voraus für die Hilfe :)

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 06:36:52
ralf_b
Und hier eine andere Variante aber ebenfalls mit der Auswertung der Zellwerte als Text.
Is vielleicht leichter lesbar als das vom Torsten.
Das Ergebnis wird erst nach alle Durchläufen angezeigt

Sub vergl()

Dim sVergltext$, sDupltext$, sBasisText$
Dim rng As Range
Dim ws As Worksheet

For Each rng In Worksheets("Tabellenname").Range("A1:D3").Cells
sBasisText = sBasisText & rng.Value & "|"
Next

For Each ws In ActiveWorkbook.Worksheets
If ws.Name > "Tabellename" Then

sVergltext$ = ""
For Each rng In ws.Range("A1:D3").Cells
sVergltext = sVergltext & rng.Value & "|"
Next
If sVergltext = sBasisText Then
sDupltext = sDupltext & vbLf & ws.Name
End If

End If
Next
If Len(sDupltext) > 0 Then
MsgBox "Dublikat vorhanden! Tabellenblatt " & sDupltext
else
MsgBox " Kein! Dublikat vorhanden. "
End If
End Sub
Anzeige
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 14:57:23
Stephan
Die Funktionsweise dahinter verstehe ich, sehr interessanter Ansatz, danke!

Leider kommt es direkt bei der ersten Befehlszeile zu einem Fehler:


For Each rng In Worksheets("Tabellenname").Range("A1:D3").Cells


Laufzeitfehler 9: Index außerhalb des gültigen Bereichs

Hast du eine Idee woran das liegen könnte?
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 15:49:49
GerdL
Moin
Duplikat = "Duplikat(e) in:"


Gruß Gerd
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 15:52:22
GerdL
Moin
Sub Unit()

Dim Wsh As Worksheet, V As Variant, V2 As Variant, Duplikat As String

Duplikat = "Duplikat(e) in:"
V = Tabelle1.Range("A1:D3")

For Each Wsh In ThisWorkbook.Worksheets

If Wsh.Name > Tabelle1.Name Then

V2 = Wsh.Range("A1:D3")


For X = UBound(V, 1) To 1 Step -1
For Y = UBound(V, 2) To 1 Step -1

If V(X, Y) > V2(X, Y) Then GoTo ex

Next
Next
ex:

If X = 0 Then Duplikat = Duplikat & vbLf & Wsh.Name
End If

Next


If Right(Duplikat, 1) = ":" Then
MsgBox "Keine Duplikate"
Else
MsgBox Duplikat
End If

End Sub

Gruß Gerd
Anzeige
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 15:17:27
Oberschlumpf
und wieso antwortest du nichts zu meinem Beitrag? :-/
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 15:02:52
daniel
Hi
wenn der Laufzeitfehler 9 in einer Zeile mit Worksheets("...") auftitt, dann liegt es meistens daran, dass du hier in der Klammer einen falschen Tabellenblattnamen eingetragen hast. Du musst den Namen verwenden, der auf dem Tabellenblattreiter des Blattes steht (bei einer neuen Datei automatisch "Tabelle1")
Gruß Daniel
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 20:37:30
Stephan
Daran scheint es zu liegen. Tabellenname ist bei mir eine Variable, da die Tabellenblätter durchnummeriert sind. Er nimmt hier bei Sheets(Tabellenname) die Tabelle 13, statt die mit dem Titel "12".
Schreibweisen wie
Sheets("""&Tabellenname&""")
oder
Sheets(chr(34)&Tabellenname&chr(34))
oder auch vorheriges Einbinden in einer Variablen
Tabellennahme = chr(34) & Tabellenname & chr(34)
Sheets(Tabellenname)


werden nicht erkannt. Kennst du eine Lösung hierfür?
Anzeige
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 20:57:15
ralf_b

Tabellenname = "testname"
Sheets(Tabellenname)
oder
Sheets("testname")
diese Gänsefüßchen extra um eine Stringvariable herum benötigst du nicht.
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 06:19:54
Oberschlumpf
Hi Stephan,

ich vergleiche nicht, wie du, Range mit Range, sondern Zelle mit Zelle.

hier, versuch mal
https://www.herber.de/bbs/user/162066.xlsm

Hilfts?

Ciao
Thorsten
AW: Range über alle Tabellenblätter vergleichen
28.07.2023 20:33:04
Stephan
Vielen Dank für deine Antwort, sogar mit Beispieldatei. Musste mir das mal in Ruhe anschauen, daher die spätere Antwort. Auch die Vorgehensweise ist interessant, irgendwann hatte ich früher mal eine For-Schleife innerhalb der For-Schleife. Aber das ist schon lange her.
Welche der Lösungen die bessere ist weiß ich nicht, wird sich zeigen wenn die Datei gewachsen ist und der zu prüfende Teil mehr geworden ist. Danke auf jeden Fall!
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige