Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
668to672
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
668to672
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro mit wdhl. Autofill vereinfachen?

Makro mit wdhl. Autofill vereinfachen?
20.09.2005 09:00:20
Daniel
Hallo VBA-Profis,
ich habe zur automatischen Terminierung einer Tabelle das unten angehängte Skript "zusammengebastelt", dass mir die Formeln in den Spalten D+G, L+O und T+W automatisch per Autofill bis zur Endemarke "end" nach unten kopiert.
Nun wird das Makro aber allmählich recht lang und es ist sicherlich auch nicht beste Möglichkeit wie man sowas realisieren kann - v.a. wenn noch weitere Spalten per Autofill gefüllt werden sollen!! Deshalb wollte ich mal fragen, ob evtl. jemand Ideen hat, wie ich mein Skript deutlich vereinfachen kann?
Zum besseren Verständnis habe ich auch mal eine Beispieldatei mit meinen Skript hochgeladen:
https://www.herber.de/bbs/user/26755.xls
Besten Dank für eure Hilfe, Vorschläge, Anregungen und Lösungen im voraus! :)
Grüsse
Daniel

Sub Terminierung()
If ActiveSheet.Name = "Beispiel" Then
On Error Resume Next
Set Teil1a = ThisWorkbook.ActiveSheet.Columns("D").Find("end", LookIn:=xlValues)
If Teil1a Is Nothing Then
MsgBox "end in Spalte D nicht gefunden!"
End If
Range("D4").AutoFill Destination:=Range("D4:D" & Teil1a.Row - 1), Type:=xlFillValues
Set Teil1b = ThisWorkbook.ActiveSheet.Columns("G").Find("end", LookIn:=xlValues)
If Teil1b Is Nothing Then
MsgBox "end in Spalte G nicht gefunden!"
End If
Range("G4").AutoFill Destination:=Range("G4:G" & Teil1b.Row - 1), Type:=xlFillValues
Set Teil2a = ThisWorkbook.ActiveSheet.Columns("L").Find("end", LookIn:=xlValues)
If Teil2a Is Nothing Then
MsgBox "end in Spalte L nicht gefunden!"
End If
Range("L4").AutoFill Destination:=Range("L4:L" & Teil2a.Row - 1), Type:=xlFillValues
Set Teil2b = ThisWorkbook.ActiveSheet.Columns("O").Find("end", LookIn:=xlValues)
If Teil2b Is Nothing Then
MsgBox "end in Spalte O nicht gefunden!"
End If
Range("O4").AutoFill Destination:=Range("O4:O" & Teil2b.Row - 1), Type:=xlFillValues
Set Teil3a = ThisWorkbook.ActiveSheet.Columns("T").Find("end", LookIn:=xlValues)
If Teil3a Is Nothing Then
MsgBox "end in Spalte T nicht gefunden!"
End If
Range("T4").AutoFill Destination:=Range("T4:T" & Teil3a.Row - 1), Type:=xlFillValues
Set Teil3b = ThisWorkbook.ActiveSheet.Columns("W").Find("end", LookIn:=xlValues)
If Teil3b Is Nothing Then
MsgBox "end in Spalte W nicht gefunden!"
End If
Range("W4").AutoFill Destination:=Range("W4:W" & Teil3b.Row - 1), Type:=xlFillValues
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 09:44:29
Luschi
Hallo Daniel,
hier mein Lösungsvorschlag: https://www.herber.de/bbs/user/26758.xls
Ich habe die eigentliche AutoFill-Routine in eine Extra-Prozedur gesteckt.
Diese wird per Parameter-Übergabe von der Haupt-Prozedur aus mehrmals aufgerufen.
Gruß von Luschi
aus klein-Paris
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 10:13:19
Daniel
Hallo Luschi,
vielen Dank für deine super Lösung! Das funktioniert bestens!!
Eine Frage dazu hätte ich aber noch: Was hat es mit dem "Application.Calculation =" auf sich? Damit habe ich noch nie gearbeitet.
Danke + Grüße
Daniel
Anzeige
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 11:02:26
u_
Hallo,
damit schaltet er den Berechnungsmodus auf manuell und wieder auf automatisch.
Was aber, wenn ich in meinem Excel keine automatische Berechnung haben will?
Derartige Manipulationen an Einstellungen sollte man immer so machen, dass der Originalzustand wieder hergestellt wird!
Also so, Luschi:
CalcOld=application.calculation
application.calculation=xlcalculationmanual
....'Code
application.calculation=CalcOld
Gruß
Geist ist geil!
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 11:17:32
Daniel
Hallo u_,
danke für deine Antwort! Mich würde noch interessieren was das "application.calculation" in diesem Skript im Detail bewirkt. Schließlich möchte ich den Code von Luschi auch richtig verstehen, damit ich solche Probleme in Zukunft selbst lösen kann.
Grüße
Daniel
Anzeige
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 12:06:15
u_
Hallo,
er schaltet wie schon gesagt die automatische Berechnung aus und wieder an.
Ich würde die Formeln ohnehin nicht mit autofill kopieren.
So brauchst du auch kein "Ende" mehr:

Sub Terminierung()
Dim iRows As Long, iCol As Integer
If ActiveSheet.Name = "Beispiel" Then
Application.ScreenUpdating = False
For iCol = 1 To 17 Step 8
iRows = Cells(65536, iCol).End(xlUp).Row
Range(Cells(4, iCol + 3), Cells(iRows, iCol + 3)).FormulaR1C1 = _
"=R[-1]C+RC[3]"
Range(Cells(4, iCol + 6), Cells(iRows, iCol + 6)).FormulaR1C1 = _
"=(RC[-4]/RC[-1])/24"
Next iCol
Else
MsgBox "Falsches Blatt"
End If
Application.ScreenUpdating = True
End Sub
Gruß
Geist ist geil!
Anzeige
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 15:17:06
Daniel
Hallo u_,
danke für deine Antwort (war leider bis jetzt nicht an meinem PC) und für deinen Lösungsvorschlag. Werd ich gleich auch mal noch ausprobieren!!
Der Befehl "application.calculation" ist mir jetzt soweit klar, ich verstehe nur noch nicht warum er in dem Skript von Luschi überhaupt notwendig ist. Bei meinen bisherigen Tests hat es auch ohne den Befehl funktioniert. Deshalb meine Nachfrage.
Grüße
Daniel
AW: Makro mit wdhl. Autofill vereinfachen?
20.09.2005 21:33:36
Uduuh
Hallo,
ist auch unnötig. Vielleicht dachte er, dann geht's schneller.
Gruß aus’m Pott
Udo

AW: Makro mit wdhl. Autofill vereinfachen?
21.09.2005 08:23:08
Daniel
Hallo Udo,
danke für deine Antwort. Ich lass es mal drin ... vielleicht bringts ja die entscheidenden Milisekunden! :)
Grüße
Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige