Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Letzte Zeile bei jedem Duchlauf neu berechnen

Letzte Zeile bei jedem Duchlauf neu berechnen
31.08.2006 17:21:51
Anton
Hallo Leute,
ich habe ein kleines Makro in eine Schleife gesteckt.
Das makro soll seine Ergebnisse immer am Ende anfügen.
Bislang sucht er sich jedes mal die selbe "letzte Zelle" aus.
Wer von Euch kann mir da weiterhelfen?
Dank und Grüße in Eure Richtung.
Servus,
Anton
Hier mein Code:

Sub DualMakro()
Dim Eingabe1 As String
Dim Eingabe2 As String
Dim Datum As Date
'Auswertungsdatum auswählen
Eingabe1 = InputBox("Bitte geben Sie das Anfangs-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 1:")
Eingabe2 = InputBox("Bitte geben Sie das End-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 2:")
'Eingabeprüfung
If Eingabe1 = "" Or Eingabe2 = "" Then Exit 

Sub 'abbrechen wurde gewählt
If CDate(Eingabe1) > CDate(Eingabe2) Then
Eingabe2 = Eingabe1
MsgBox ("Ohne eine korrekte 2. Eingabe" & Chr(10) & "wird nur der " & Eingabe1 & Chr(10) & "ausgewertet.")
Call Makro2(CDate(Eingabe1))
Else
For Datum = CDate(Eingabe1) To CDate(Eingabe2)
Call Makro2(Datum)
Next Datum
End If
End Sub


Sub Makro2(Datum As Date)
'Dim Datum As Date (wird schon verwendet)
Dim EingabeErsatz As String
EingabeErsatz = Format(Datum, "dd.mm.yyyy")
MsgBox ("Eingabe:" & EingabeErsatz)
Workbooks("Makro und ZielDaten.xls").Sheets("Ziel").Activate
Range("K2").Value = Datum
'Letzte Zeile suchen
Dim ZL As Long
ZL = ActiveSheet.UsedRange.Rows.Count
'MsgBox ("'" & ZL & "'")
Cells(ZL, 1).Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(R2C11,'[Daten-Muster.xls]Tabelle1'!C1:C4,2,FALSE)"
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte Zeile bei jedem Duchlauf neu berechnen
31.08.2006 17:50:35
Reinhard
1 dim lz as integer
2 ActiveSheet.Cells(65536, 1).Select
3 Selection.End(xlUp).Select
4 lz = ActiveCell.Row
5 z = lz +1
zu 2 - Auswahl der ActiveCell auf die letzten Zeile um Blatt
zu 3 - wählt die in der gwählten Spalte die letzte Zeile mit einem Eintrag aus
zu 4 - Zeile in eine Variable laufen lassen
zu 5 - das ist die nächste leere Zeilennr. in der entspr. Spalte
später Dank
01.09.2006 13:49:59
Anton
Hallo Reinhard,
vielen Dank für Deine Zeilen.
Meine kleine Schleife funzt jetzt wunderbar, und schaut jetzt so aus:
Servus,
Anton

Sub DualMakro()
Dim Eingabe1 As String
Dim Eingabe2 As String
Dim Datum As Date
'Auswertungsdatum auswählen
Eingabe1 = InputBox("Bitte geben Sie das Anfangs-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 1:")
Eingabe2 = InputBox("Bitte geben Sie das End-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 2:")
'Eingabeprüfung
If Eingabe1 = "" Or Eingabe2 = "" Then Exit 

Sub 'abbrechen wurde gewählt
If CDate(Eingabe1) > CDate(Eingabe2) Then
Eingabe2 = Eingabe1
MsgBox ("Ohne eine korrekte 2. Eingabe" & Chr(10) & "wird nur der " & Eingabe1 & Chr(10) & "ausgewertet.")
Call Makro2(CDate(Eingabe1))
Else
For Datum = CDate(Eingabe1) To CDate(Eingabe2)
Call Makro2(Datum)
Next Datum
End If
End Sub

'

Sub Makro2()

Sub Makro2(Datum As Date)
'Dim Datum As Date (wird schon verwendet)
Dim EingabeErsatz As String
EingabeErsatz = Format(Datum, "dd.mm.yyyy")
MsgBox ("Eingabe:" & EingabeErsatz)
Workbooks("Makro und ZielDaten.xls").Sheets("Ziel").Activate
Range("K2").Value = Datum
'Letzte Zeile suchen
Dim ZL As Long
Dim LetzteZeile As Integer
ActiveSheet.Cells(65536, 1).Select    'Auswahl der ActiveCell auf die letzten Zeile dem Blatt
Selection.End(xlUp).Select            'in dieser Spalte die letzte gefüllte Zeile auswählen
LetzteZeile = ActiveCell.Row          'Zeile in eine Variable laufen lassen
ZL = LetzteZeile + 1                  'ist die nächste leere Zeilennr. in der entspr. Spalte
'MsgBox ("'" & ZL & "'")
Cells(ZL, 1).Select
'Range("A2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(R2C11,'[Daten-Muster.xls]Tabelle1'!C1:C4,2,FALSE)"
'Formeln zu Werten machen
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End Sub

Anzeige
Fehlergefahr
01.09.2006 14:30:46
Reinhard
Hi Alex,
Bei zeilennummern ab 32000 kriegste durch das "Integer" einen Fehler da Integer nur bis 32000 geht, also "Long" nehmen bei zeilen.. Probiers mal so:
Option Explicit
Sub DualMakro()
Dim Eingabe1 As String, Eingabe2 As String, Datum As Date
Eingabe1 = InputBox("Bitte geben Sie das Anfangs-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 1:")
Eingabe2 = InputBox("Bitte geben Sie das End-Datum" & Chr(10) & "der Auswertung ein:" & Chr(10) & "(TT.MM.JJJJ)", "Datum 2:")
If Eingabe1 = "" Or Eingabe2 = "" Then Exit Sub
If CDate(Eingabe1) > CDate(Eingabe2) Then
Eingabe2 = Eingabe1
MsgBox ("Ohne eine korrekte 2. Eingabe" & Chr(10) & "wird nur der " & Eingabe1 & Chr(10) & "ausgewertet.")
End If
For Datum = CDate(Eingabe1) To CDate(Eingabe2)
Call Makro2(Datum)
Next Datum
End Sub
Sub Makro2(Datum As Date)
'Dim Datum As Date (wird schon verwendet)
Dim EingabeErsatz As String, ZL As Long
MsgBox ("Eingabe:" & Format(Datum, "dd.mm.yyyy"))
With Workbooks("Makro und ZielDaten.xls").Sheets("Ziel")
.Activate
.Range("K2").Value = Datum
ZL = .Cells(65536, 1).End(xlUp).Row + 1
.Cells(ZL, 1).FormulaR1C1 = "=VLOOKUP(R2C11,'[Daten-Muster.xls]Tabelle1'!C1:C4,2,FALSE)"
.Cells.Copy
.Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: später Dank
01.09.2006 22:41:13
Reinhard2
Hallo Anton,
super, es muß bei der Variablendeklaration naürlich ein Long sein. Da war ich zu vorschnell. Bei 65536 Zeilen produziert ein Integer eine Fehlermeldung. Ok. Ok... doppelt checken ist besser.
Viel Spaß
Reinhard2

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige