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

For Each o. andere Schleife?

For Each o. andere Schleife?
Fritz
Liebe Leute, noch 'ne Frage.
Auf dem Tabellenblatt "Start" stehen in Zelle "G33" die Uhrzeit "6:30", in Zelle "H33" die Uhrzeit "9:30"
Auf meinem dank Hans Herber angelegtem Tabellenblatt "Kalender" stehen in der ersten zeile die Uhrzeiten ab 6:00 bis 21:00
in Halbstundenschritten - wobei nach jedem Schritt eine Zelle "Bemerkungen" eingefügt ist.
Erreichen möchte ich, dass ich mit einer Schleife den Bereich im "Kalender", der mit den Werten der Zellen G33 und H33
im Tabellenblatt "Start" übereinstimmt, gelb einfärbe.
Dazu habe ich das untenstehende Makro geschrieben, von dem ich finde, dass es schon ganz gut aussieht;-). Funzt aber leider nicht,
was mich sehr schleift:-((
Kann mir mal wieder jemand helfen?

Sub BelegteZeiten()
Dim tbs As Worksheet, tbk As Worksheet
Dim i%, r%, c%
Dim Zelle As Object
i = 1
Set tbs = Worksheets("Start")
Set tbk = Worksheets("Kalender")
r = ActiveCell.row
c = ActiveCell.Column
For Each Zelle In Range(Cells(r, 4), Cells(r, 65))
If Format(tbk.Cells(r, 2), "dddd") = tbs.Range("F33").Value _
And Cells(1, c) <= tbs.Range("H33") >= tbs.Range("G33") Then '''Wenn ich das umdrehe, wird der gesamte Range eingefärbt
Zelle.Interior.ColorIndex = 6
End If
Next Zelle
End Sub

Grüße, Fritz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: For Each o. andere Schleife?
Ulf
Wenn alles andere stimmt, dann so:
And Cells(1, c) = tbs.Range("G33") Then
Ulf
AW: Leider nicht
Fritz
Hallo Ulf,
So wird der gesamte Range(cells(r,4), cells(r,65)) eingefärbt. Das hatte ich schon probiert, sicherheitshalber mit Deinem Vorschlag auch noch mal.
Danke trotzdem.
Grüße, Fritz
AW: Leider nicht
Ulf
Lad doch mal die Mappe nur mit den beiden Blättern hoch.
Ulf
AW: For Each o. andere Schleife?
joel
hallo fritz
prüf doch mal auf welche zellen deine vergleiche überhaupt angewendet werden..
lass mal schritt für schritt compilieren und vergleiche die werte von r und c (übrigens: die variable i brauchst du nicht. zur besseren lesbarkeit schreibe anstelle
"dim i%, r%, c%" folgendes:
dim r as integer, c as integer. lösche dann noch die zeile (i = 1))
falls es nicht klappt, poste mal die tabelle
gruss joel
Anzeige
bin ich blöd oder was...
joel
hallo fritz
ja genau, bei "i" liegt ja gerade das problem...
du vergleichst immer die selben zellen..
bau in der abfrage das "i" wieder ein...
... and cells(1+i,c)... und dann noch die zeile i = i+1 innerhalb der for-schleife
gruss joel
Mappe hochgeladen
Fritz
https://www.herber.de/bbs/user/5634.xls
Hallo, ulf und joel.
Beim Hochladen habe ich mich ein wenig dämlich angestellt, aber jetzt ist sie da.
Es stehen noch keine Geheimnisse drin.
Einzelne Blätte nebst code habe ich nicht hochgekriegt.
Das fragliche Makro ist im Modul "test" und heißt Sub BelegteZeiten()
Danke für Eure Mühe.
Fritz
Anzeige
AW: Mappe hochgeladen
joel
hallo fritz
war kurz weg.. also, hab mir dein blatt angeschaut. eins ist mir nicht klar: was möchtest du mit den zeilen
r = ActiveCell.row
c = ActiveCell.Column
erreichen? du bist dir bewusst, dass du eine zelle auswählen musst, damit hier was läuft..
gruss joel
AW: Mappe hochgeladen
joel
hallo fritz
hab das ganze ein wenig umgeschrieben...
hier eine erste variante, die für ALLE tage in kalender die uhrzeit der spalten G und H (blatt "START") im blatt "KALENDER" einfärbt

Sub BelegteZeiten()
'konstanten für arbeitsblatt "Start"
WOTAG1 = "F33"      'erster wochentag
WOTAG2 = "F39"      'letzter wochentag
S_ARBZ1 = 1         'offset spalte beginn erste arbeitszeit (spalte G zu spalte F)
S_ARBZ2 = 2         'offset spalte ende erste arbeitszeit (spalte H zu spalte F)
'konstanten für arbeitsblatt "Kalender"
TAG1 = "B2"         'erster tag
TAG2 = "B553"       'letzter tag
UHRZ1 = "D1"        'früheste uhrzeit
UHRZ2 = "BL1"       'späteste uhrzeit
'variablen
Dim tbs As Worksheet        'arbeitsblatt "Start"
Dim tbk As Worksheet        'arbeitsblatt "Kalender"
Dim rWoTag As Range         'bereich im arbeitsblatt "Start" mit wochentagen
Dim rTag As Range           'bereich im arbeitsblatt "Kalender" mit tagen
Dim rUhrZ As Range          'bereich im arbeitsblatt "Kalender" mit uhrzeit
Dim c As Range, _
d As Range, _
e As Range              'hilfsvariablen (eine zelle im arbeitsblatt)
Set tbs = Worksheets("Start")
Set tbk = Worksheets("Kalender")
Set rWoTag = Range(tbs.Range(WOTAG1), tbs.Range(WOTAG2))
Set rTag = Range(tbk.Range(TAG1), tbk.Range(TAG2))
Set rUhrZ = Range(tbk.Range(UHRZ1), tbk.Range(UHRZ2))
For Each c In rTag
For Each d In rWoTag
If Format(c.Value, "dddd") = Format(d.Value, "dddd") Then       'falls tag übereinstimmt
For Each e In rUhrZ
If e.Value >= d.Offset(0, S_ARBZ1) And _
e.Value <= d.Offset(0, S_ARBZ2) Then                 'falls uhrzeit in arbeitszeit
e.Offset(c.Row - e.Row, 0).Interior.ColorIndex = 6  'zelle einfärben
End If
Next e
End If
Next d
Next c
End Sub

falls du z.B. nur diejenige zeile in "KALENDER" einfärben möchtest, die angewählt ist, muss das ganze natürlich angepasst werden... was genau hast du also damit vor?
gruss joel
ps: ist ja ne riesen programmiererei.. hoffe, du hast dich da nicht übernommen!
Anzeige
AW: Mappe hochgeladen
Fritz
Halli, joel.
Ohhh, Du bist ja'n Schatz:-))
Das ziehe ich mir noch heute nacht rein!!!
Trotzdem hier mein Erklärungsversuch, den ich geschrieben habe, als du fleißg gewesen bist.
Ich könnt mich überschlagen vor Freude.
Hab vielen Dank.
hier also nun der Erklärungsversuch:
Ich versuche mal, es zu erklären.
Dieses Kalenderblatt soll dazu dienen, mir während meines Arbeitstages bestimmte Zeiten frei zu halten.Diese frei zu haltenden Zeiten sollen dann farblich markiert werden. Mit einer anderen Prozedur soll nämlich auf dem Kalenderblatt nach Zellen ohne Farbe gesucht werden, in die ich dann den Namen des Kontaktes aus dem Tabellenblatt „Daten“ durch Click eintragen will.
Also ich befinde mich in einem Datensatz der Tabelle „Daten“ und klicke auf der UF „Basis“ z.B. auf den Button 4 Wochen, dann wird auf dem Kalenderblatt der Termin in 4 Wochen gefunden, und falls der Tag farbig ist, wird auf die nächste Zelle nach unten in A gesprungen.
Von da geht es weiter nach rechts (dieser Teil des Codes ist fertig und funzt, ist nur noch nicht eingebaut). Jetzt sollen aber die Bereiche übersprungen werden, die gelb eingefärbt sind.
Mit r = ActiveCell.Row und c = ActiveCell.Column hoffte ich, dann mit Cells(r, 2) und Cells(1, c) die jeweiligen Werte in Zelle 2 der aktiven Reihe (in dem codefragment eben der Montag) und in der Spalte die jeweilige Uhrzeit zu erfragen.
Das klappte ja auch so weit. D.h. die entsprechende Zeile finde ich, der Range von Spalte C bis Spalte BE wird auch mal gelb, er soll aber nur bis 9:30 gelb werden, nicht bis 21:00 Uhr.
Ich habe sowas schon mal gebaut, aber mit massenhaft „select“ – und das macht man ja nicht.
Ich hoffe, das war einigermaßen verständlich.
Vielleicht hast Du ja eine andere Idee, wie ich das Problem lösen kann.
Noch was: Auf der Tabelle Start sollen die Werte veränderlich sein. Also wenn ich da in G33 8:00 reinschreibe, sollen(natürlich durch ein anderes Makro) die Bereich geändert werden.
Das Makro „Belegte Zeiten“ soll am Ende so aussehen, dass es den gesamten Bereich für jeden Tag des aktuellen Kalenders entsprechend der Vorgaben auf TB „Start“ einfärbt.
Ich gehe jetzt aber erstmal auf’n Bier in den Dorfkrug.
Mir wäre ja vielleicht schon mit einer Idee geholfen, die für den beschriebenen Zweck sinnvoll wäre. Vielleicht habe ich mich nur verrannt. Ich kapiere das mit den Variablen noch immer nicht ganz.
Liebe Grüße, Fritz
Anzeige
Genial
24.04.2004 03:27:36
Fritz
Hi, joel!
Ich finde das einfach nur noch genial. Ich habe Deinen Code eben ausprobiert und er kommt meinem Ziel sehr, sehr, wirklich sehr nahe! Über den Rest werde ich mir heute im Laufe des Samstages Gedanken zu machen haben.
Zu Deinem P.S.: Bei solch einer Hilfe darf ich mich schon mal an Dinge wagen, die mich überfordern.
Und: Learning by Doing, das hat was.
Ich will, wenn die ganze Mappe fertig ist, diese auch meinen Kolleginnen und Kollegen zur Verfügung stellen und alle meine Helfer bei diesem etwas größeren Projekt können versichert sein, dass ich meine Quellen auch öffentlich mache.
Ich kann mich gar nicht mehr einkriegen vor Begeisterung. Eure Hilfsbereitschaft und die Mühe, die Ihr Euch macht, sind faszinierend.
Vielleicht kann ich ja mal was zurück geben (Wenn vielleicht auch an anderer Stelle).
Danke.
Fritz
Anzeige
Ich versuche mal, hochzu laden
23.04.2004 21:28:08
Fritz
Lieber Ulf, liebe joel.
habe versucht, i einzubringen. funzt aber nicht.
In der Mappe stehen als Daten nur blödsinniges, weil wird noch gebaut.
Danke schon mal für Eure Mühe.
Fritz

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige