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

For - Next - Abfrage verbessern

For - Next - Abfrage verbessern
18.05.2016 13:52:02
Michael
Hallo zusammen,
zwei Fragen habe ich:
1. Wie kann ich bei dieser For-Next-Abfrage die Zeile:
For lZeile_I = 4 To 2000 so ändern, dass automatisch die letzte Zeile erkannt wird.

Sub Eintragen_Test()
Dim lZeile_I  As Long
' Übertrag der Formeln von Zelle J3:L3 bis letzte ausgefüllte Zelle der Spalte I
Application.ScreenUpdating = False
Sheets("Auswertung").Select
With ThisWorkbook.Worksheets("Auswertung")
For lZeile_I = 4 To 2000
If Trim(.Range("I4" & lZeile_I).Value)  "" Then
.Range("J3:L3").Copy
.Range("J" & lZeile_I).PasteSpecial Paste:=xlPasteFormulas
End If
Next lZeile_I
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

2. Frage
Durch die Formeln, die von J3:L3 dort hineinkopiert werden, wird die Datei sehr langsam. Jedes Mal, wenn ich dann einen anderen Eintrag tätige, wird neu berechnet.
Da ich diese Formeln nur einmal zur Berechnung benötige, habe ich die Reihen J4 : L2000 kopiert und als Wert wieder eingefügt (per VBA).
Kann man diesen Befehl direkt in den obigen Code einbinden?
Über eine Antwort würde ich mich sehr freuen.
Gruß und schon einmal Danke
Michael

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For - Next - Abfrage verbessern
18.05.2016 14:00:11
ChrisL
Hi Michael
Sub Eintragen_Test()
Dim lZeile_I  As Long
' Übertrag der Formeln von Zelle J3:L3 bis letzte ausgefüllte Zelle der Spalte I
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets("Auswertung").Select
With ThisWorkbook.Worksheets("Auswertung")
For lZeile_I = 4 To .Cells(.Rows.Count, 9).End(xlUp).Row
If Trim(.Range("I4" & lZeile_I).Value)  "" Then
.Range("J3:L3").Copy
.Range("J" & lZeile_I).PasteSpecial Paste:=xlPasteFormulas
End If
Next lZeile_I
End With
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

cu
Chris

Anzeige
AW: For - Next - Abfrage verbessern
18.05.2016 15:02:33
Michael
Hallo Chris,
schönen Dank für deine schnelle Antwort.
Leider funktioniert der Code nur bis Zelle J9; dann hört er auf.
Die Spalte I ist aber befüllt bis Zelle I127 (bei anderen Abfragen bis I1800).
Vielleicht kannst du mir sagen, warum der bei J9 aufhört.
Nochmals Danke
Gruß
Michael

ohne For ...Next
18.05.2016 15:14:59
Rudi
Hallo,
Sub Eintragen()
With Sheets("Auswertung")
.Range("J3:L3").Copy .Range(.Cells(4, 9), .Cells(Rows.Count, 9).End(xlUp)).Offset(, 1)
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub

Gruß
Rudi

Anzeige
AW: ohne For ...Next
18.05.2016 15:27:55
Michael
Hallo Rudi,
schönen Dank. Funktioniert fast einwandfrei.
Kopiert die Daten einwandfrei, nur bei der Zeile:
.PasteSpezial xlPasteValues
kommt die Fehlermeldung:
Laufzeitfehler 1004: Die PasteSpecial-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.
Werde mich morgen mal damit beschäftigen; jetzt ist nach 9 Stunden Feierabend angesagt :-)
Gruß
Michael
Michael

AW: ohne For ...Next
18.05.2016 15:28:15
Michael
Hallo Rudi,
schönen Dank. Funktioniert fast einwandfrei.
Kopiert die Daten einwandfrei, nur bei der Zeile:
.PasteSpezial xlPasteValues
kommt die Fehlermeldung:
Laufzeitfehler 1004: Die PasteSpecial-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.
Werde mich morgen mal damit beschäftigen; jetzt ist nach 9 Stunden Feierabend angesagt :-)
Gruß
Michael
Michael

Anzeige
AW: Pardon - Code von Rudi ...
18.05.2016 19:10:18
Rudi
Sorry, nicht aufgepasst
Der Code ist natürlich von Rudi. Schöne Grüsse an ihn, er ist sehr gut.
Ich schaetze seine Arbeit sehr. Wenn der Code jetzt laeuft freue ich mich,
denn es ist sein Werk. Ich habe nur das korrigiert was ich für richtig hielt.
mfg Piet

AW: For - Next - Abfrage verbessern
18.05.2016 19:01:32
Piet
Hallo Michael
Probier bitte einmal diesen Code. Er basiert auf dem Code von Michael.
Nach meiner Ansicht fehlt aber vor dem 2. PasteSpecial dieser Range Teil:
.Range("J4:L" & lz).
Ich bin über lz = LastCell gegangen weil das für mich leichter zu programmieren war.
Ist auch hierin enthalten, ich sehe das, aber für Anfanenger zu schwer verstaendlich.
.Range(.Cells(4, 9), .Cells(Rows.Count, 9).End(xlUp)).Offset(0, 1)
Ich hoffe der korrigierte Code laeuft zufriedenstellend. (Erstellt von Michael)
mfg Piet
Sub Eintragen_2()
With Sheets("Auswertung")
'letzte Zelle in Spalte I ermitteln
lz = .Range("I" & .Cells.Rows.Count).End(xlUp).Row
'1. Kopie Funktion:  Formeln einfügen
.Range("J3:L3").Copy .Range("J4:J" & lz)
'2. Kopie Funktion:  Werte einfügen
.Range("J4:L" & lz).Copy
.Range("J4:L" & lz).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub

Anzeige
AW: For - Next - Abfrage verbessern
19.05.2016 07:50:28
Michael
Guten Morgen Piet,
schönen Dank für deine Hilfe.
Der umgebaute Code von Rudi (nochmals Danke) funktioniert einwandfrei.
Ich möchte mich auch bei den anderen Helfer hier sehr herzlich bedanken und wünsche noch einen schönen Tag.
Gruß
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige