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

Loop, oder geht's anders.

Loop, oder geht's anders.
15.01.2005 01:53:44
Fritz
Hallo, nochmal vorm Zubettgehen.
Ich habe mir einen "Dynamischen Kalender" gebastelt. Unten wird abgeschnitten, und oben wird angefügt. Die Prozedur wird mit dem Öffnen der Mappe in Gang gesetzt und hat den Sinn, dass ich Fristen auch über ein Jahr setzen kann. Ich habe bemerkt, dass beim Öffnen der Mappe unheimlich viel Zeit vergeht und hätte das gern etwas schneller. Frage: Ist die Loop-Schleife da richtig oder kann man das schneller lösen?

Sub DynKal()
Dim zeile As Integer
Dim wks As Worksheet
Dim i As Integer
Dim StartDatum As Date
Dim enddatum As Date
enddatum = Date + 365
Set wks = Sheets("Kalender")
For zeile = 1 To 800
If wks.Cells(zeile, 1) = Date - 84 Then
wks.Range(Cells(1, 1), Cells(zeile, 1)).EntireRow.Delete
Exit For
End If
Next zeile
i = 1
wks.Range("A1000").End(xlUp).Select
Do Until ActiveCell = enddatum
If ActiveCell < enddatum Then
ActiveCell.Offset(1, 0) = ActiveCell + 1
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop
End Sub

Es kommt hinzu, dass noch eine Feiertagsfunktion mitläuft, die ja wohl bei jedem "select" initialisert wird, wenn ich mich nicht täusche.
Für einen nächtlichen Tipp wäre ich sehr dankbar.
Gruß, Fritz

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Loop, oder geht's anders.
Luschi
Hallo Fritz,
so ganz habe ich den dynam. Kalender noch nicht verstanden.
Aber Folgendes würde ich ändern:
Die Feiertagsüberprüfung ist nur erforderlich, wenn ein neuer Tag (oben/unten ?) hinzukommt. Das diese Überprüfung offensichtlich bei jedem Zellwechsel (.Select) stattfindet, macht es das Programm schwerfällig.
Den Select-Befehl sollte man sowieso beim Durchlaufen von Schleifen vermeiden, da das eine unnötige Bremse ist. Das ist ungefähr genau so, als wenn ein Referent erst alle Tagungsteilnehmer (mehrere Hundert) persönlich mit Handschlag begrüßt und dann seine Rede hält, als stattdessen gleich ans Rednerpult zu gehen und alle zusammen eine Begrüßungsformel durchs Mikrofon zu flüstern.
In Access benutze ich oft die Do While-Schleife (wegen EOF-Bedingung). In Excel verwende ich dagegen lieber die For-Schleife wegen des Schleifenzählers. So kann ich einfacher überprüfen, an welcher Stelle wurde die For-Schleife eventuell vorzeitig verlassen.
Ich konnte Dir zwar nur erste allgemeine Tipps geben, aber vielleicht kannst Du eine Light-Version Deiner Arbeitsmappe auf den Herber-Server laden.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Loop, oder geht's anders.
15.01.2005 09:28:31
Josef
Hallo Fritz!
Sollte etwas schneller sein! ;-)


      
Option Explicit
Sub DynKal()
Dim zeile As Integer
Dim wks As Worksheet
Dim i As Integer
Dim StartDatum As Date
Dim enddatum As Date
Dim rng As Range     '<---
Dim lastRow As Long  '<---
StartDatum = Date - 84
enddatum = Date + 365
On Error GoTo ERRORHANDLER
With Application
.ScreenUpdating = 
False
.EnableEvents = 
False
.DisplayAlerts = 
False
.Calculation = xlCalculationManual
End With
Set wks = Sheets("Kalender")
Set rng = wks.Range("A:A").Find(What:=StartDatum)
   
If Not rng Is Nothing Then
      wks.Range(Cells(1, 1), Cells(rng.Row, 1)).EntireRow.Delete
   
Else
      MsgBox 
"Datum nicht gefunden!"
      
Exit Sub
   
End If
lastRow = wks.Range(
"A1000").End(xlUp).Row
i = enddatum - wks.Cells(lastRow, 1)
wks.Cells(lastRow, 1).AutoFill Destination:=wks.Range(wks.Cells(lastRow, 1), _
wks.Cells(lastRow + i, 1)), Type:=xlFillDefault
ERRORHANDLER:
With Application
.ScreenUpdating = 
True
.EnableEvents = 
True
.DisplayAlerts = 
True
.Calculation = xlCalculationAutomatic
End With
End Sub 


Gruß Sepp
Anzeige
AW: Loop, oder geht's anders.
15.01.2005 10:34:03
Fritz
Danke Luschi und Sepp.
Sepp, ich probiere das gleich mal auf der Arbeit aus.
ein schönes Wochenende wünscht,
Fritz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige