Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
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

Variable aktualisieren

Variable aktualisieren
Holger
Hallo Excel-Freunde,
leider hänge ich schon wieder fest und komme nicht weiter.
Eigentlich sollte der unten stehende Code-Teil die Werte aus verschiedenen Arbeitsblättern zusammen suchen und dann auf dem Zielblatt untereinander schreiben. Aber leider werden die Werte auf dem Zielblatt nur überschrieben und nicht untereinander gesetzt.
Scheinbar aktualisiert sich die Variable "LetzteZelle" nicht nach jedem Schreibvorgang.
    Dim vntSh As Variant
Dim Index2 As Integer
Dim LetzteZelle As Long
vntSh = Array(s1b, s1c, s1d, s1e)
LetzteZelle = IIf(IsEmpty(Sheets(s1f).Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
.Range("A1:I" & .Cells(Rows.Count, 8).End(xlUp).Row). _
Copy Sheets(s1f).Cells(LetzteZelle + 1, 1)
End With
Next
Kann mir jemand helfen?
Gruß Holger

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

Betreff
Benutzer
Anzeige
AW: Variable aktualisieren
08.06.2010 14:22:25
Hajo_Zi
Hallo Holger,
vor End With
LetzteZelle = IIf(IsEmpty(Sheets(s1f).Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)

AW: Variable aktualisieren
08.06.2010 14:34:16
Holger
Hallo Hajo,
vielen Dank!
Allerdings habe ich jetzt die Variable "Letzte Zelle" 2mal im Code. Gibt es vielleicht noch eine andere Möglichkeit?
Gruß Holger
AW: Variable aktualisieren
08.06.2010 14:38:08
Hajo_Zi
Hallo Holger,
ja mache es nur einmal nach With

AW: Variable aktualisieren
08.06.2010 14:41:22
Holger
Vielen Dank!
Genau das hatte ich jetzt auch probiert und es klappt.
With Sheets(vntSh(Index2))
LetzteZelle = IIf(IsEmpty(Sheets(s1f).Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
.Range("A1:I" & .Cells(Rows.Count, 8).End(xlUp).Row). _
Copy Sheets(s1f).Cells(LetzteZelle + 1, 1)
End With
Gruß Holger
Anzeige
...aber
08.06.2010 16:05:18
Holger
Zu früh gefreut. Ich brauche noch mal eure Hilfe.
Bei folgenden Code wird "LetzteZelle" wieder nicht aktualisiert. Es bleibt immer der erste Wert bestehen. Ich hatte schon "LetzteZelle" direkt vor With End und auch schon zweimal im Code. Es bleibt immer gleich. Es ist zum Verzweifeln. Was mache ich falsch?
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
LetzteZelle = IIf(IsEmpty(Sheets(vntSh(Index2)).Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
.Range("a1").Copy Sheets(vntSh(Index2)).Range("A2:A" & LetzteZelle)
End With
Next
Gruß Holger
Anzeige
Vollständige Referenzierung
08.06.2010 17:39:48
Erich
Hallo Holger,
schau dir mal dieser beiden Varianten an:

Option Explicit
Sub xxx1()
Dim s1b As String, s1c As String, s1d As String, s1e As String, s1f As String
Dim vntSh As Variant
Dim Index2 As Integer
Dim LetzteZelle As Long
vntSh = Array(s1b, s1c, s1d, s1e)
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
LetzteZelle = IIf(IsEmpty(Sheets(s1f).Cells(Rows.Count, 2)), _
Sheets(s1f).Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
.Range("A1:I" & .Cells(Rows.Count, 8).End(xlUp).Row). _
Copy Sheets(s1f).Cells(LetzteZelle + 1, 1)
End With
Next
End Sub
Sub xxx2()
Dim s1b As String, s1c As String, s1d As String, s1e As String, s1f As String
Dim vntSh As Variant
Dim Index2 As Integer
Dim lngZ As Long, lngQ As Long
vntSh = Array(s1b, s1c, s1d, s1e)
With Sheets(s1f)                                   ' belegte Zeilen im Zielblatt
lngZ = IIf(IsEmpty(.Cells(Rows.Count, 2)), _
.Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
End With
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
lngQ = IIf(IsEmpty(.Cells(Rows.Count, 8)), _
.Cells(Rows.Count, 8).End(xlUp).Row, Rows.Count) ' Zeilen im Quellblatt
If lngZ + lngQ > .Rows.Count Then
MsgBox "Quellblatt " & .Name & " passt nicht mehr in Zielblatt"
Exit Sub
End If
.Cells(1, 1).Resize(lngQ).Copy Sheets(s1f).Cells(lngZ + 1, 1)
lngZ = lngZ + lngQ
End With
Next
End Sub
Kommst du damit klar?
Wofür steht bei dir die Variable "LetzteZelle"?
Für die letzte Zeile des jeweiligen Quellblatts oder für die letzte Zeile des Zielblatts?
Das sollte immer klar sein!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Vollständige Referenzierung
08.06.2010 20:04:01
Holger
Hallo Erich,
jetzt hast du dir so eine Mühe gemacht...Danke!
Warscheinlich habe ich es nicht so deutlich geschrieben, aber mein letzter Beitrag enthält einen anderen Code, mit dem gleichen Problem. Das erste Problem ist gelöst worden und funktioniert gut.
Mein immer noch aktuelles Problem ist folgendes:
Auf den Blättern "s1b, s1c, s1d und s1e" soll jeweils festgestellt werden, welche die letzte gefüllte Zelle in Spalte B ist, ausgehend von Zelle B1. Danach soll die Spalte A ab A2 mit dem Wert aus der Zelle A1 gefüllt werden.
Beispiel: Auf Blatt s1b ist die Spalte B von B1 bis B93 gefüllt. Also sollte jetzt die Spalte A von A2 bis A93 mit dem Wert aus der Zelle A1 aufgefüllt werden.
Mein nachfolgender Code funktioniert leider an einem Punkt nicht, nämlich das sich der Wert von "LetzteZelle" nicht auf das nächste Blatt aktualisiert. Es behält immer den Wert vom ersten Blatt.
Dim s1b$, s1c$, s1d$, s1e$
Dim vntSh As Variant
Dim Index2 As Integer
Dim LetzteZelle As Long
vntSh = Array(s1b, s1c, s1d, s1e)
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
LetzteZelle = IIf(IsEmpty(Sheets(vntSh(Index2)).Cells(Rows.Count, 2)), _
Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
.Range("a1").Copy Sheets(vntSh(Index2)).Range("A2:A" & LetzteZelle)
End With
Next

"LetzteZelle" bezieht sich immer auf die letzte Zelle der Spalte B des jeweiligen Blattes.
Gruß Holger
Anzeige
AW: LetzteZelle besser in Schleife aktualisieren!
08.06.2010 14:24:23
JOWE
AW: Variable aktualisieren
08.06.2010 20:43:51
Gerd
Hallo Holger!
Dim s1b$, s1c$, s1d$, s1e$
Dim vntSh As Variant
Dim Index2 As Integer
vntSh = Array(s1b, s1c, s1d, s1e)
For Index2 = 0 To UBound(vntSh)
With Sheets(vntSh(Index2))
.Range("a1").Copy (.Range("A2:A" & _
IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)))
End With
Application.CutCopyMode = False
Next
Für den einmaligen Gebrauch pro Blatt musst Du für die letzte Zeile keine Variable verwenden.
Oder das Ganze mit spezifischeren Methoden als Copy, falls nur die Werte übertragen werden sollen ?
Gruß Gerd
Anzeige
AW: Variable aktualisieren
09.06.2010 07:29:51
Holger
Danke Gerd,
du hast mir sehr geholfen.
Ich habe jetzt aus allen problematischen Codeteilen die Variable "LetzteZelle" rausgenommen und siehe da, es läuft fehlerfrei.
Wahrscheinlich habe ich einfach zu quer gedacht ;-)
Gruß Holger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige