Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

bestimmte Bereiche vergleichen

bestimmte Bereiche vergleichen
30.05.2008 14:22:01
Koop
Hallo euch allen,
ich bin mal wieder auf ein Problem gestoßen.
Ich wähle per Maus einen Bereich aus und möchte diesen bearbeitet haben.
mit
area = ActiveWindow.Selection.Address
speichere ich den Bereich, der markiert wurde.
mit
For Each cell In Sheets(Tabelle2).Range(area)
möchte ich nun jede Zelle dieses Blattet mit dem Folgeblatt vergleichen.
Der Vergleich funktioniert gut, aber nur für die erste Zelle (oben links im Auswahlbereich), dann hört das Makro ohne nögreln einfach auf.
Weiß einer von euch warum?
Grüße!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Bereiche vergleichen
30.05.2008 14:36:40
Renee
Hi Koop,
Du solltest dich vielleicht mal mit dem Objektmodell und der Referenzierung von Objekten in Excel beschäftigen.
Wieso referenzierst du im For Each Loop eine Tabelle2 (was so sowieso nicht funktionieren kann) ?
Referenzierungsmöglichkeiten:
Per Index (Zahl): Sheets(1).Range...
Per Name(String): Sheets("Tabelle2").Range...
Per VBA-Name: Tabelle2.Range...
Wieso ActiveWindow.Selection? Gibts noch andere Selection(s) ?
Warum nicht, ohne speichern etc... ?

Dim rC as Range
For each rC in Selection
....blabla


GreetZ Renée

Anzeige
AW: bestimmte Bereiche vergleichen
30.05.2008 14:49:00
Koop
Hallo Renee,
mein Problem ist, dass das Makro während der Prozedur, bevor es an diese Stelle kommt, bereits mehrfach zwischen den Blättern gewechselt hat und sich inzwischen in einer anderen Funktion befindet. Durch das Speichern in der globalen Variable area, kann die spätere Funktion auf den Bereich zugreifen, ich wüsste nicht wie ich das sonst anstellen sollte.
"Dim rC as Range
For each rC in Selection
....blabla"
Mit "For Each ... in Selection" habe ich es auch erst versucht, aber dabei gab er mir dann nen Fehler aus.
Grüße.

AW: bestimmte Bereiche vergleichen
30.05.2008 14:55:00
Renee
Hi Koop,
...bereits mehrfach zwischen den Blättern gewechselt hat.. In VBA kommt man normalerweise in 9999 von 10000 Befehlen ohne Wechseln .Select/.Activate aus!
Warum speicherst du dann die Adresse? und nicht den Bereich:

Dim rSpeicher As Range
Sub x()
Set rSpeicher = Selection
End Sub
Sub y()
Dim rC As Range
For Each rC In rSpeicher


GreetZ Renée

Anzeige
AW: bestimmte Bereiche vergleichen
30.05.2008 15:01:12
Koop
Er wechselt das Blatt, weil der Nutzer gefragt wird mit welchem Bereich auf dem anderen Blatt verglichen werden soll. Dazu wird ihm Das Blatt angezeigt und er wird aufgefordert den Bereich ebenfalls zu markieren. Ansonsten bin ich auch ein Gegener der ".Select & .Activate Bewegung" :)
Ich habe nun den Bereich und nicht die Adresse gespeichert, aber über dei erste Zelle kommt er trotdem nicht hinaus.

AW: bestimmte Bereiche vergleichen
30.05.2008 15:07:00
Renee
Hi Koop,
..., aber über dei erste Zelle kommt er trotdem nicht hinaus.
Keine Ahnung, was dein Code-Gehopse sonst noch anstellt. Schreib halt mal nach dem Set den adressierten Bereich raus:

Dim rSpeicher As Range
Sub x()
Set rSpeicher = Selection
MsgBox rSpeicher.Address
End Sub
Sub y()
Dim rC As Range
MsgBox rSpeicher.Address
For Each rC In rSpeicher
MsgBox rC.Value
Next
End Sub


GreetZ Renée

Anzeige
AW: bestimmte Bereiche vergleichen
30.05.2008 16:04:51
Koop
Hey Jungs, ich danke euch, mit euren Anregungen und etwas basteln habe ich es nun mit reichlich umstellen hinbekommen.
Thx!!

AW: bestimmte Bereiche vergleichen
30.05.2008 14:59:00
Tobias

bereits mehrfach zwischen den Blättern gewechselt


Der Renée hat da schon ganz recht mit dem Objektmodell. Zwischen Tabellenblätter wechseln sollte es eigentlich (fast) gar nicht geben. Ob Du dann einen (string?) Area oder einen Range für spätere Funktionen speicherst (global!) ist eigentlich egal.
Arbeite doch lieber so:
dim sht1 as worksheet, sht2 as worksheet, shtDaten as worksheet
set sht1 = Sheets("TabelleDieErste")
'...
set shtDaten = Sheets("Daten")
'Jetzt kannst Du auf die Zellen zugreifen, ohne das Sheet zu wechseln:
a = sht1.Range("A1").value
'...
b = shtDaten.Range("K23").value

Anzeige
AW: bestimmte Bereiche vergleichen
30.05.2008 14:48:00
Tobias
Richtig nachvollziehen kann ich es nicht. Vielleicht passiert ein Fehler beim Aufruf des Sheets.
Bei mir hat folgender Code funktioniert, hilft es Dir weiter?

Sub Vergleich()
Dim rng As Range
Dim cell As Range
Dim sht As Worksheet
Set rng = ActiveWindow.Selection
Set sht = Sheets("Tabelle2")
For Each cell In rng
Debug.Print cell.Value = sht.Range(cell.Address).Value
Next
End Sub


AW: bestimmte Bereiche vergleichen
30.05.2008 14:54:00
Koop
Hallo Tobias,
hab Deinen Code ausprobiert, ist kürzer, aber auch da hört er bei mir anch der ersten Zelle auf.
Gruß.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige