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

letzte Zeile

letzte Zeile
10.12.2004 10:38:01
roger
Hallo
ich habe folgenden code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Activate
Sheets("VegIrr.prog").Select
letzte_Zeile = Cells(Rows.Count, 2).End(xlUp).Row
If letzte_Zeile >= 25 Then
Rows(letzte_Zeile).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

Nun sollte die letzte_Zeile nur markiert werden, wenn auch wirklich (optisch) ein Wert darinn steht. Das heisst, wenn nur Funktionen darinn stehen, also "" sind, sollten diese Zellen nicht als "Beschrieben" gelten und als letzte_zeile gelten. Weis jemand eine Lösung?
Vielen Dank,
roger

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile
Volker
Hallo Roger,
du kannst die HasFormula-Eigenschaft der Zelle abfragen

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Activate
Sheets("VegIrr.prog").Select
letzte_Zeile = Cells(Rows.Count, 2).End(xlUp).Row
while cells(letzte_zeile,2).hasformula = true
letzte_zeile=letzte_zeile-1
wend
If letzte_Zeile >= 25 Then
Rows(letzte_Zeile).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

AW: letzte Zeile
10.12.2004 11:25:44
roger
Hallo Volker,
danke für deine Antwort. Es würde auch Funktionieren, aber es ist nicht das was ich suche. die Tabelle hat z.b. 300 Zeilen mit Funktionen drin. jetzt wird jeden Tag, oder vieleicht an einem Tag mehrere Zeilen mit Werten gefüllt. Das heisst von "" zu zb. 30 (durch Funkt errechnet. =WENN(A290="";"";('FAO-PMON'!$J267)). So sehen z.B. die Funkt. aus. Das heisst wenn in A290 ein Datum eingetragen wird, läuft von Spalte B bis V die Berechnungen ab und die Zellen werden gefüllt. Wenn nun hasformula = true ist, nimmt es die beschriebenen Zellen auch nicht, da ja auch eine Formel dahinter ist. (Sorry für mein umständliches Erklähren. Ich bräuchte etwas, das wirklich nur die Zellen welche eine Formel haben und auch errechnet wurden, selektiert.
Gruss,
roger
Anzeige
vielleicht so:
IngoG
Hallo Roger,
im gegensatz zur ersten Lösung sollten hier Zeilen erkannt werden, die aus Formeln stammen und einen Wert "" zurückgeben ;-)

Sub aaa()
Dim zelle As Range
Dim letzte_zeile As Long
ThisWorkbook.Activate
Sheets("VegIrr.prog").Select
Set zelle = Range("a65536").End(xlUp)
Do While zelle = "" And zelle.Row > 1
Set zelle = zelle.Offset(-1)
Loop
letzte_zeile = zelle.Row
If letzte_zeile >= 25 Then
Rows(letzte_zeile).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
AW: vielleicht so:
10.12.2004 11:40:55
roger
Hallo IngoG
Der Code Funktioniert bei mir nicht. Das heisst, es geschieht nichts. Es soll ja in der Spalte 2 die letzte Zeile welche sowohl eine Formel als auch ein Wert hat erkannt werden. Du hast das ja richtig erkannt. Dies soll erst ab Zeile 25 geschehen. So wie ich das in deinem Code gesehen habe stimmt das ja alles (verstehe allerdings fast nichts von VBA). Ich habe den Code auch in die Arbeitsmappe kopiert.
Weist du weiter?
roger
AW: vielleicht so:
IngoG
Hallo Roger,
sorry hab die 2 überlesen und bin auf spalte a gegangen ;-), also:

Sub aaa()
Dim zelle As Range
Dim letzte_zeile As Long
ThisWorkbook.Activate
Sheets("VegIrr.prog").Select
Set zelle = Range("b65536").End(xlUp)
Do While zelle = "" And zelle.Row > 1
Set zelle = zelle.Offset(-1,0)
Loop
letzte_zeile = zelle.Row
If letzte_zeile >= 25 Then
Rows(letzte_zeile).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

Anzeige
Funktioniert super, war mein Fehler
10.12.2004 12:40:37
roger
Danke IngoG
Funktioniert super. Mein Fehler war, dass ich dein Code (Sub aaa()) nicht mit Privat sub Workbook before close ersetzt habe. Sonst hätte es schon beim ersten mal geklappt.
herzlichen Dank,
roger
Danke für die Rückmeldung oT
IngoG
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige