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

GoTo und der Code rennt sich tot

GoTo und der Code rennt sich tot
20.06.2004 21:31:03
FritzSanne
Liebe Excel-Helfer.
Bis zu der GoTo Anweisung läuft der Code.
Sinn der Sache ist, dass ich mir automatisch Termine zu jeder vollen Stunde vorschlagen lassen, wenn die Zellen nicht belegt sind, bzw. wenn sie nicht farbig unterlegt sind. Ist ein Tag mit Terminen voll, wird der nächste angesprungen und es wird geprüft, ob nicht ein Feertag oder Wochenende ist (ist auch bunt :-))
Bis dahin klappt es.
Nun soll aber am neuen Arbeitstag wieder überprüft werden, wann ich Zeit habe.
Das wollte ich mit der Goto-Anweisung erreichen. Aber da rennt er los und hört nichtwieder auf.
Wie kann man das denn regeln?
Dankbar für Hilfe grüßt Euch Fritz

Sub GesperrteZeitAusschließen()
Dim Zeit As Date
Dim Spalte As Long
Dim r As Integer
r = ActiveCell.row
Dim SpalteGefunden As Boolean
Dim MorgenWeiter As Boolean
Sheets("Kalender").Activate
Zeit = Sheets("Start").Range("H33").Value
For Spalte = 4 To 64
If IsNumeric(Cells(1, Spalte)) And Not IsEmpty(Cells(1, Spalte)) Then
If Cells(1, Spalte).Value = Zeit Then
SpalteGefunden = True
Exit For
End If
End If
Next Spalte
If SpalteGefunden Then
ActiveCell.Cells(, Spalte).Offset(0, 2).Select
End If
For Spalte = 4 To 70
If IsEmpty(Cells(1, Spalte)) Then MorgenWeiter = True
If Not IsEmpty(ActiveCell) Or Not ActiveCell.Interior.ColorIndex = xlColorIndexNone Then
ActiveCell.Offset(0, 4).Select
End If
Next Spalte
If MorgenWeiter Then Cells(r + 1, 1).Select
If MorgenWeiter Then ArbeitsfreieTageAusschließen
Zeile22:
If MorgenWeiter Then GoTo Zeile22
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GoTo und der Code rennt sich tot
20.06.2004 21:50:58
Björn
Hallo Fritz,
mit der Anweisung
If MorgenWeiter then goto Zeile22
springt der Code auf die Zeilenmarke
Zeile22:
Dort steht aber die zuvor aufgeführte Anweisung, so dass sich der Code in einer nicht endenden Schleife befindet.
Grundsätzlich solltest Du die GoTo-Anweisung vermeiden.
Selbst wenn Du bei Deinem Code die Zeilenmarke Zeile22: weiter oben in den Code integrierst, so denke ich, dass der Code nicht funktionieren wird, da Du mal mit der aktiven Zelle (das müsste klappen) und mal mit einem Bezug der Form Cells(1, Spalte) arbeitest.
Insgesamt ist das ganze ohne Deine Datei schwierig zu verbessern.
Gruß
Björn
Anzeige
AW: GoTo und der Code rennt sich tot
20.06.2004 22:00:38
Fritz
Hallo, Björn.
Mein Problem ist, dass ich eigentlichn noch immer nicht richtig erfasse, was ich da baue. Der Hinweis mit den Zellbezügen und den aktiven Zellen wird zumindest dazu führen, dass ich mich noch einmal hineinknien werde.
Danke für Deine Antwort - ich lasse aber noch offen.
Schönen Abend noch.
Grüße, Fritz
AW: GoTo und der Code rennt sich tot
20.06.2004 23:05:58
Björn
Hallo Fritz,
wie wär's mit einem Upload Deiner Datei?
Wenn ich begreife, was da passieren soll, kann ich Dir eher helfen.
Gruß
Björn
AW: GoTo und der Code rennt sich tot
20.06.2004 23:47:15
Fritz
https://www.herber.de/bbs/user/7559.xls
Hallo Björn,
Danke für Deine Mühe.
Ich habe die Datei mal hochgeladen. Ich konnte sie nicht kleiner machen - es hätte ja vielleicht nur ein oder zwei Tabellenblätter gereicht.
Es handelt sich um die frmTermine und den Code Sub GesperrteZeitAusschließen(). Auf dem Eröffnungsbildschirm kannman auf die Buttons drücken 1 Woche, 2 Wochen und so und dann sollte es losgehen.
Der Code funktioniert nicht, wenn auf dem Blatt "Kalender" zu jeder vollen Stunde die weißen Zellen belegt sind.
Sonst funzt er (Glaube ich wenigstens :-))
Danke noch mal, Fritz
Anzeige
AW: GoTo und der Code rennt sich tot
21.06.2004 22:48:07
Björn
Hallo Fritz,
das Verständnis für das, was Du tun willst, ist nun da, ich arbeite an einer Lösung.
Ein paar Fragen hätte ich aber gerne noch von Dir beantwortet:
- Du definierst auf dem Blatt "Start" in "F30:L39" Ausschlußzeiten. Wie werden diese in
die gelbe Markierung auf dem Blatt Kalender umgesetzt?
- Erfolgt die Umsetzung über ein Makro, so dass Änderungen der Zeiten auch zu einer
Änderung der Markierung führen oder hast Du die Markierung per Hand vorgenommen?
- Sollen die definierten Ausschlußzeiten für die unterschiedlichen Wochentage
berücksichtigt werden?
Du fragst bisher nur nach H33 (Ende des 1. Ausschlußzeitraums am Montag und arbeitest
dann über die Markierung. Dieses Vorgehen scheitert, wenn für andere Tage andere
Zeiten definiert sind.
Gruß
Björn
Anzeige
Lösungsvorschlag
22.06.2004 00:38:14
Björn
Hallo Fritz,
habe inzwischen das Makro entdeckt, mit dem Du die gelbe Markierung einfügst.
Somit beantworte ich mir meine Frage, ob unterschiedliche Ausschlußzeiten pro Wochentag
berücksichtigt werden soll mit "Ja".
Versuche es daher doch mal mit folgendem Code:

Sub GesperrteZeitAusschließen()
Dim Zeit As Date
Dim r As Integer
Dim Tag As Integer
Dim MorgenWeiter As Boolean
Sheets("Kalender").Activate
Do
MorgenWeiter = False
r = ActiveCell.Row
Tag = Application.WorksheetFunction.Weekday(ActiveCell, 2)
Zeit = Sheets("Start").Range("H" & 32 + Tag).Value
ActiveCell.Offset(0, (Zeit * 48 - 12) * 2 + 5).Select
Do While Not IsEmpty(ActiveCell) Or Not ActiveCell.Interior.ColorIndex = xlColorIndexNone
ActiveCell.Offset(0, 4).Select
If ActiveCell.Column > 64 Then
MorgenWeiter = True
Cells(r + 1, 1).Select
ArbeitsfreieTageAusschließen
Exit Do
End If
Loop
Loop Until MorgenWeiter = False
End Sub

Ein Hinweis noch zu deinem Programmcode, ohne Anspruch auf die beste Lösung:
In Deinen Subs NaechsterTermin, EineWoche, ZweiWochen, etc. solltest Du vor dem "Next"
ein "Exit For" einfügen und den Aufruf von "ScrollbalkenPosition" kannst Du Dir komplett
schenken, da in der Prozedur "GesperrteZeitAusschließen" eine Zelle auf dem Tabellenblatt
"Kalender" selektiert wird und dann das SelectionChange-Ereignis des
Worksheets "Kalender" eintritt und in der Ereignisprozedur ohnehin "ScrollbalkenPosition" aufgerufen wird.
So wie Du das gelöst hast, funktioniert es auch, aber man kann etwas Zeit sparen.
Gruß
Björn
Anzeige
AW: Lösungsvorschlag
22.06.2004 08:45:10
Fritz
Guten Morgen Björn.
Ich finde das tll, dass du dich da reingeknieht - in in diesen Bastlercode.
Ich habe das gestern abend nicht mehr mitbekommen, dass Du mir gepostet hast. Bevor ich jetzt ganz schnell zur Arbeit muss, druck ich mir den thread aus, nehme mein Schlepptopp mit auffe Arbeit und werde es dann dort ausprobieren.
Ich melde mich auf jeden Fall heute abend noch einmal.
Also, nochmals vielen Dank.
Bis heute abend.
Güße, Fritz
:-))) Freudige Ehrfurcht und Danksagung
22.06.2004 21:46:03
Fritz
Lieber Björn.
Ich bin ehrlich sowas von begeistert, das kannst Du Dir gar nicht vorstellen.
Dein Code funktionierte auf Anhieb – ich habe ihn soeben von „Hacke bis Nacke“ getestet und er läuft so, wie ich es mir gewünscht und gedacht hatte.
Ganz abgesehen davon ist der Lerneffekt für mich ein immenser.
Ich will nicht einfach nur Danke schön sagen, sondern auch etwas ausholen.
Dieser Kalender ist eigentlich mit der wichtigste Teil in dieser Anwendung. Zwar benutze ich ein ähnliches Modell schon in einer anderen Anwendung; weil diese aber einige ganz heftige Macken hat und ich gleichzeitig teilweise sehr stark in eine andere Arbeitsstelle wegen einer längerfristigen Vertretung zusätzlich eintauchen musste, versuchte ich das Programm neu zu schreiben und an die Anforderungen der neuen Stelle anzupassen.
Hätte ich Euch aus dem Forum nicht immer als Hilfe gehabt bei den Dingen, die sich mir noch nur sehr schwer erschließen, wäre ich mit dem ganzen Programm wohl kläglich gescheitert.
Das wurde mir schon damals klar, als joel viel Zeit aufwendete, um diese veränderliche gelbe Färbung zu programmieren und meinte, ob ich mich nicht vielleicht übernommen hätte.
Was ich damals antwortete, gilt auch heute und auch für Dich:
Wenn man solche Helfer hat, kann man sich gar nicht weit genug nach vorn wagen.
Was ich bisher gelernt habe, gebe ich gern weiter.
So konnte ich heute auf die Schnelle den Kolleginnen und Kollegen ein klitzekleines Programm schreiben, damit sie aus einer Exceltabelle auf Doppelclick eine Adresse in ein Word-Dokument eingeben können. An so etwas habe ich vor einem halben Jahr noch nicht zu denken gewagt, heut kann ich’s auswendig.
(Trotzdem gilt mein Level :-))
Ich denke, das Weitergeben des Erlernten ist im Sinne des Forums.
Also – ganz großen herzlichen Dank für Deine Mühe und Deine Bereitschaft, mir zu helfen.
Viele Grüße,
Fritz
Anzeige
Danke für die nette Rückmeldung, Fritz! o. T.
23.06.2004 20:48:51
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige