Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1008to1012
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

Makro auch von anderem Sheet starten

Makro auch von anderem Sheet starten
08.09.2008 14:05:37
anderem
Hallo Forum,
ich habe ein Makro, dass Spalte A von Sheet DUMMY mit Spalte A von Sheet ZIEL vergleicht
und die Fundzeilen im Bereich B:D überschreibt. Das klappt soweit gut.
Einziger Nachteil: das Makro funktioniert nur bei Aufruf von Sheet DUMMY,
auf allen anderen Seiten passiert nichts.
Habe auch schon mit "With Worksheets("DUMMY")" experimentiert aber
bekomme einfach kein Ergebnis. Hat jemand von Euch eine Idee?
Für Antworten ein Dankeschön im voraus
Klaus

Sub FindenÜberschreiben()
'vergleicht Sheet DUMMY Spalte A mit Sheet ZIEL Spalte A
'und überschreibt die Fundzeile im Bereich der Spalten B:D im Sheet ZIEL
Dim rng As Range
Dim intRow As Integer
intRow = 1
Do Until IsEmpty(Cells(intRow, 1))
'Vergleichsrange = Spalte A von Worksheet ZIEL:
Set rng = Worksheets("ZIEL").Columns(1).Find(Cells(intRow, 1), _
lookat:=xlWhole, LookIn:=xlValues)
'wenn gefunden dann Spalte B:D in Fundzeile überschreiben
If Err.Number = 0 Then
Range(rng.Offset(0, 1), rng.Offset(0, 3)).Value = Range(Cells(intRow, 2),  _
Cells(intRow, 4)).Value
intRow = intRow + 1
Else
intRow = intRow + 1
End If
Loop
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auch von anderem Sheet starten
08.09.2008 16:59:00
anderem
Hallo Klaus,
ungetestet. Es wird immer das aktive Blatt mit dem Zielblatt verglichen.
Gruß
Franz

Sub FindenÜberschreiben()
'vergleicht Sheet DUMMY Spalte A mit Sheet ZIEL Spalte A
'und überschreibt die Fundzeile im Bereich der Spalten B:D im Sheet ZIEL
Dim rng As Range
Dim lngRow As Long
Dim wksAktiv As Worksheet
Dim wksZiel
Set wksZiel = Worksheets("ZIEL")
Set wksAktiv = ActiveSheet
If wksAktiv.Name = wksZiel.Name Then
MsgBox "Sie versuchen das Blatt ""Ziel"" mit sich selbst zu vergleichen!" & _
"Makro wird abgebrochen!"
Exit Sub
End If
lngRow = 1
With wksAktiv
Do Until IsEmpty(.Cells(intRow, 1))
'Vergleichsrange = Spalte A von Worksheet ZIEL:
Set rng = wksZiel.Columns(1).Find(.Cells(lngRow, 1), _
lookat:=xlWhole, LookIn:=xlValues)
'wenn gefunden dann Spalte B:D in Fundzeile überschreiben
If Not rng Is Nothing Then
wksZiel.Range(rng.Offset(0, 1), rng.Offset(0, 3)).Value = _
.Range(.Cells(lngRow, 2), .Cells(lngRow, 4)).Value
End If
lngRow = lngRow + 1
Loop
End With
End Sub


Anzeige
AW: Makro auch von anderem Sheet starten
08.09.2008 17:09:00
anderem
Hallo Franz,
erst einmal ein Danke für Dein Bemühen.
Vielleicht hatte ich mich unklar ausgedrückt(?):
Die beiden angegebenen Seiten DUMMY und ZIEL sollen immer verglichen werden,
aber mein Makro funktioniert nur, wenn ich den Button auf der Seite DUMMY anlege und von dort starte.
Wenn ich z.B. auf der Seite ZIEL bin (oder auf einer anderen Seite) passiert nichts ...
Gruß
Klaus
AW: Makro auch von anderem Sheet starten
08.09.2008 17:41:36
anderem
Hallo Klaus,
wenn du das Makro von einem beliebigen Blatt aus starten willst, dann müssen die Objekte (hier Tabellenblätter), in/mit denen gearbeitet werden soll, eindeutig benannt werden. Bei deinem bisherigen Code greift das Makro fast immer auf das aktive Blatt zu.
Mit folgender Anpassung sollte es funktionieren. Mit der With-Anweisung und dem "." vor den Range und Cell-Methoden wird der Zugriff auf das Blatt wksDummy definiert.
Gruß
Franz

Sub FindenÜberschreiben()
'vergleicht Sheet DUMMY Spalte A mit Sheet ZIEL Spalte A
'und überschreibt die Fundzeile im Bereich der Spalten B:D im Sheet ZIEL
Dim rng As Range
Dim lngRow As Long
Dim wksDummy As Worksheet
Dim wksZiel
Set wksZiel = Worksheets("ZIEL")
Set wksDummy = Worksheets("DUMMY")
lngRow = 1
With wksDummy
Do Until IsEmpty(.Cells(intRow, 1))
'Vergleichsrange = Spalte A von Worksheet ZIEL:
Set rng = wksZiel.Columns(1).Find(.Cells(lngRow, 1), _
lookat:=xlWhole, LookIn:=xlValues)
'wenn gefunden dann Spalte B:D in Fundzeile überschreiben
If Not rng Is Nothing Then
wksZiel.Range(rng.Offset(0, 1), rng.Offset(0, 3)).Value = _
.Range(.Cells(lngRow, 2), .Cells(lngRow, 4)).Value
End If
lngRow = lngRow + 1
Loop
End With
End Sub


Anzeige
AW: Makro auch von anderem Sheet starten
08.09.2008 18:43:31
anderem
Hallo Franz,
vielen Dank, ich bekomme die Meldung:
"Die Methode Default für das Range-Objekt ist fehlgeschlagen"
und die Zeile "Do Until IsEmpty(.Cells(intRow, 1))" ist markiert
Hast Du dazu noch eine Idee?
Gruß
Klaus
Fehler gefunden
08.09.2008 19:04:00
Klaus
Hallo Franz,
habe es selber finden können, es war einmal lngRow und einmal intRow definiert.
Jetzt klappt alles!
Herzlichen Dank für Deine Hilfe ...
Gruß
Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige