Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro für Enzo versagt genau bei 7:00 Uhr
#1
Hallo Kollegen

im Augenblick bin ich ratlos über ein Problem, das ich nicht zu lösen vermag.  Es geht um die Beispielmappe für Enzo, im Thread  "Namen zuordnen mit Einschränkungen"  wo ich entnervt nicht weiter weiss.

Die Datei ist als xlsx damit sie jeder öffnen kann, das Makro ist in Sayfa1 als Text.  Es gehört in die Tabelle Spielplan, wird per Button gestartet.  Teile habe ich durch Goto Start deaktiviert zum besseren Testen.  Das Problem ist in der roten Zeile.

Ich vergleiche in Zeile 2 die Uhrzeiten für Spiele Aktionen, wobei es Überlauf geben kann wenn kein Personal zur Verfügung steht.  Um 7:00 tritt dieser Fall ein.  Komischerweise werden die Kollegen korrekt zugeordnet, der Überlauf landet aber in Spalte 46!!  Seltsamerweise nur bei der Uhrzeit 7:00 Uhr, die anderen Zeiten stimmen.  Das kapier ich einfach nicht!!

Hat da jemand einen Tipp wie ich das Problem lösen kann.  Waere sehr nett von euch.

mfg  Gast 123


Angehängte Dateien
.xlsx   Spielplan Verknüpfung Enzo.xlsx (Größe: 62,25 KB / Downloads: 11)
Antworten Top
#2
Hallo Gast 123

vorab ohne Test ein Hinweis.

Du überprüfst zwei Gleitkommazahlen auf Gleicheit. Das führt häufig zu scheinbaren Fehlern. Versuch einmal den Absolutwert der Differenz auf kleiner x zu prüfen.



ps. Bei der 4. AC-Zelle ist die Differenz ~3,3*10^-17. Die Werte sind also nicht gleich.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#3
Hi

Wau, riesen Projekt.


Zitat:Ich vergleiche in Zeile 2 die Uhrzeiten
Nachfrage. Wie vergleichst du denn die Zeiten miteinander?
Evtl. liegt da schon das Problem. Denn 07:00:00 ist nicht unbedingt gleich 07:00:00.
 
Siehe Anhang

.xlsx   Uhrzeiten vergleich.xlsx (Größe: 8,31 KB / Downloads: 4)

Gruß Elex
Antworten Top
#4
Hallo,

ich konnte den Fehler leider nicht reproduzieren.
Gruß
Michael
Antworten Top
#5
Hallo und Danke an alle

Zitat:Absolutwert der Differenz auf kleiner x zu prüfen

@Ego   Danke für den Hinweis, weil ich kein Mathematiker bin, wie macht man das in VBA in der Praxis??
 
@Elex  Danke für das Beispiel, ich probiere es aus.

mir fiel bei einem Text auf warum es mit * 1440 nicht klappen konnte.  Das Problem bei der .Zeile 2 ist, das dort Uhrzeiten drin stehen und auch Text wie:  Aktion, Material, Bemerkungen. Das kann man nicht multiplizieren!

Eine lange Arbeit, an der Endlösung für den Überlauf arbeite ich noch. Würde mich freuen wenn ich das ans laufen bekomme. Ich sehe aber auch immer wieder das mir bestimmtes Fachwissen einfach fehlt.  Mein Vergleich war wohl zu simpel:  ach ja, in Zeile 2 stehen die Uhrzeiten als Formel, keine Werte!  If Ac.Value <> AC.Offset(-1,0).Value then    Ironie, bei manchen Zeiten klappt es problemlos, nur bei 7:00 Uhr leider nicht!!

Frage:   korrupte Beispiel Datei
Die letzte Beispiel Datei von Enzo hat einen merkwürdişgen Effekt!!  Beim Öffnen konnte ich die Reiter nicht umschalten. Drückt man auf Erfassung, erscheint der Text "Erfassung" über dem Reiter "Endergebnis".  Drücke ich Sayfa 1 wird Erfassung oder Endergebnis geöffnet. Ein direktes Öffnen war nicht möglich. Nur beim Wechsel wurde ein anderer Reiter geöffnet. Was kann das für eine Ursache/ Bewandniss haben??

Nach dem Speichern als xlsx Datei, nur zum Testen, war der Effekt verschwunden. Das Makro startet nicht über Target, nur über den Button!!

mfg  Gast 123
Antworten Top
#6
Hallo Gast 123

zB so:
Code:
    For d = 16 To Spmax Step 3  '45 Spalten von P-AS
      If Abs(AC.Value - .Cells(2, d)) < 0.0001 Then Exit For
    Next d

ps. Achtung! "Step 3"
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#7
Hallo Helmut

danke für den Code, ich habe ihn gleich eingebaut und schicke Enzo gleich die neue Datei zum Testen. Bin gespannt wie es klappt.

herzlichen Dank für deine Hilfe!

mfg  Gast 123
Antworten Top
#8
Oder

Tabelle1.Range("I1:M38") = tabelle1.listobjects(1)


Code:
Sub M_snb()
   sn = Tabelle1.ListObjects(1).Range
   c00 = "  7:00  8:00  9:15 10:30 11:45 13:30 14:45 16:00 17:15 18:30"
   ReDim sp(UBound(sn), 31)
   
   For j = 2 To UBound(sn)
     For jj = 0 To UBound(sp)
         If sp(jj, 0) = sn(j, 5) Or sp(jj, 0) = "" Then Exit For
     Next
     sp(jj, 0) = sn(j, 5)
     y = 3 * InStr(c00, Format(sn(j, 1), "h:mm")) \ 6
     sp(jj, y) = sn(j, 2)
     sp(jj, y + 1) = sn(j, 3)
     sp(jj, y + 2) = sn(j, 4)
    Next
    
    Tabelle1.Range("O3:AS3").Resize(jj) = sp
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Hallo  snb

Danke für deinen Code, ich habe ihn ins Beispiel geladen und werde ihn morgen mal testen.

Ich wünsche dir ein frohes Weihnachtsfest und ein glückliches neutes Jahr....

mfg  Gast 123
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste