Excel VBA Problem mit Find

Diskutiere und helfe bei Excel VBA Problem mit Find im Bereich Microsoft Office im Windows Info bei einer Lösung; Hallo, NG, ich habe totale Probleme mit Find - Excel liefert einfach nicht die richtigen Ergebnisse, hier mein gekürzter Code: Function... Dieses Thema im Forum "Microsoft Office" wurde erstellt von SIH007, 12. August 2019.

  1. SIH007
    SIH007 Gast

    Excel VBA Problem mit Find


    Hallo, NG,


    ich habe totale Probleme mit Find - Excel liefert einfach nicht die richtigen Ergebnisse, hier mein gekürzter Code:

    Function IstArbeitsTag(rngDatum as Range) as Integer

    Set rngFeiertage = Range("Holidays").Resize(,1)

    IstArbeitsTag = 1

    set rngIstFeiertag = rngFeiertage.Find(What:=rngDatum.Value, LookIn:=xlValues)


    If not rngIstFeiertag Is Nothing then

    IstArbeitsTag = 0

    End If


    End Function


    Ich bekomme keine Fehlermeldung, sondern das Teil rechnet einfach falsch. Mit rngFeiertage greife ich auf die Spalte der Holidays-Tabelle zu, in der die Feiertagsdaten stehen (Spalte 1). Wenn ich die Function teste, reagiert sie überhaupt nicht auf irgendwelche Feiertage, also wenn in rngDatum (immer nur eine Zelle) der 3.10.2019 steht, müsste die Function doch eigentlich ins If-Statement springen und IstArbeitsTag auf 0 setzen. Das passiert aber nicht.


    Sieht jemand von euch den Grund, warum das nicht funktioniert? VBA Find sieht eigentlich nicht so schwierig aus.


    Gruß

    Susanne
     
  2. Claus Busch Win User

    Excel VBA Problem mit Find

    Hallo Susanne,

    es hängt nicht an der Excel-Version.

    Kann es sein, dass im Bereich Holidays die Datumswerte aus Formeln bestehen? Kann es sein, dass entweder bei den Arbeitstagen oder bei den Feiertagen das Format nicht übereinstimmt?

    Bei mir und mit festen Werten funktionieren beide Versionen.

    Claus
  3. SIH007 Win User

    Excel VBA Problem mit Find

    Nachtrag:

    ich glaube, es liegt tatsächlich an meinem Firmenrechner, habe das Ganze jetzt an meinem PC versucht, indem ich einfach eine Datumsreihe eingegeben und eine kleine Tabelle Holidays dazugepackt habe, da funktioniert es einwand frei. Allerdings habe ich Excel
    365 auf meinem PC, während der Arbeits-PC 2010 hat.
  4. SIH007 Win User

    Excel VBA Problem mit Find

    Hallo, Claus,

    leider hilft mir das nicht weiter. Die Feiertagsnamen sind eigentlich völlig wurscht, nur wenn ein Anwender neue Feiertage eingeben muss, hilft denen das. Daher ist Resize richtig, in der ersten Spalte stehen die Feiertags-Datumswerte, mehr brauche ich nicht
    für mein Find. Und Zählenwenn hilft hier auch nicht weiter, es geht nicht um die Anzahl der Feiertage, sondern es muss für jeden Tag im Jahr geklärt werden, ob Feiertag oder nicht. Vielleicht dazu zur Info - es handelt sich um einen Produktionsplan für verschiedene
    Standorte, je nach Standort wird 5, 6 oder 7 Tage gearbeitet (glücklicherweise planen die keine Kurzarbeit ;-)). Wenn 5 Tage pro Woche gearbeitet wird, wird natürlich auch nur an diesen 5 Tagen produziert, wenn 7 Tage pro Woche, dann gibt es keinen freien
    Tag, es sei denn, es handelt sich um einen gesetzlichen Feiertag... Also abhängig davon, wo die jeweilige Maschine steht, muss berechnet werden, ob sie produziert oder nicht.

    Du schreibst, ich solle If so machen:

    If Not rngistfeiertag Is Nothing Then
    
       IstArbeitsTag = 0
    
    Else
    
        IstArbeitsTag = 1
    
    End If
    Das Else verstehe ich nicht, ich habe gleich zu Anfang IstArbeitsTag auf 1 gesetzt, von daher soll die Function den Wert ja nur ändern, wenn es ein Feiertag ist, d. h. wenn er über If hinweggeht, weil die Bedingung nicht erfüllt ist, bleibt der Wert doch
    auf 1.

    Wenn ich mit F8 durch den Code gehe, bleibt rngIstFeiertag auf Nothing stehen, obwohl ich beim Testen explizt auf den 3.10. verweise, der auch in der Tabelle steht. Habe jetzt sogar eine weitere Spalte eingefügt, die aus dem Datum einen formatierten Text
    macht. Auch erfolglos.

    Das Problem ist

    Set rngIstFeiertag = rngfeiertage.Find(rngDatum.Text)

    Wenn ich da mit F8 drübergehe, bleibt der Wert von
    rngIstFeiertag

    auf Nothing, obwohl der 3.10. eingestellt ist.

    Gruß

    Susanne
  5. Claus Busch Win User

    Excel VBA Problem mit Find

    Hallo Susanne,

    die Feiertagsnamen stehen in Spalte A und das zugehörige Datum in Spalte B?

    Dann ist das nicht RESIZE sondern OFFSET.

    Probiere es doch einfach mit ZÄHLENWENN:

    Function IstArbeitsTag(rngDatum As Range) As IntegerSet rngfeiertage = Range("Holidays").Offset(, 1)If Application.CountIf(rngfeiertage, rngDatum) > 0 Then
    
       IstArbeitsTag = 0
    
    Else
    
        IstArbeitsTag = 1
    
    End IfEnd Function
    Claus
  6. Claus Busch Win User

    Excel VBA Problem mit Find

    Hallo Susanne,

    hier noch ein Nachtrag:

    Was du in der Datumszelle siehst, ist rngDatum.Text. rngDatum.Value wäre für den 03.10.2019 die Zahl 43741.

    Du kannst dann auch über die Find-Methode den Feiertag finden. musst dann nur rngDatum.Text verwenden:

    Function IstArbeitsTag(rngDatum As Range) As IntegerSet rngfeiertage = Range("Holidays").Offset(, 1)Set rngistfeiertag = rngfeiertage.Find(rngDatum.Text)
    If Not rngistfeiertag Is Nothing Then
    
       IstArbeitsTag = 0
    
    Else
    
        IstArbeitsTag = 1
    
    End IfEnd Function
    Claus
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

Excel VBA Problem mit Find - Microsoft Office

Die Seite wird geladen...

Excel VBA Problem mit Find - Similar Threads - Excel VBA Problem

Forum Datum

Excel VBA

Excel VBA: Hallobenutze schon länger ein selbst geschriebenes Addin eine Berechnungsfunktion. Diese ist bei den AddIns Datei > Optionen > AddIn auch angezeigt und funktioniert auch über benutzerdefinierte...
Microsoft Office 9. Juni 2022

Excel - VBA

Excel - VBA: Hallo Zusammen! Kann mir jemand sagen, wie ich es einfacher gestallten kann? Ich muss dies von Zeile 2 bis 1915 machen. LG Nikola Sub WennDann If Range"G2" = "" Then Range"D2" = Range"H2"...
Microsoft Office 8. Oktober 2020

VBA in Excel

VBA in Excel: hallo, wenn ich auf entwicklertools gehe und möchte visual basic aufrufen bekomme ich nur eine grauen bildschirm bzw. kom ich nicht in den bearbeitungsmodus. wäre super wenn mir jemand...
Microsoft Office 17. Mai 2020

Excel VBA

Excel VBA: Liebe Community! Ich habe Office 365. Ich habe eine Excel Vorlage mit VBA Codes. Diese Vorlage hat jetzt 3 Jahre perfekt funktioniert. Vor 1 Woche hat es auch noch besten funktioniert. und...
Microsoft Office 5. Februar 2020

excel vba

excel vba: hi ich habe: Worksheets("test2").Range("b3").Copy Destination:=Worksheets("Mdax").Range("b20") was schön und gut funktioniert nur kann ich damit auch die Zielzelle definieren? In meinem...
Microsoft Office 24. Juli 2019

EXCEL-VBA.

EXCEL-VBA.: Wie splittet man den Bildschirm bei Programmtests in 1. Code-Fenster, 2. EXCEL-Arbeitsblatt. Ich weiß, dass es geht aber nicht wie. Heißen Dank!
Microsoft Office 10. Dezember 2018

MS-Supportseite zu Excel VBA finden

MS-Supportseite zu Excel VBA finden: Hallo! Mehr durch Zufall habe ich diese Original - MS-SupportSeite "Auswählen von Zellen/Bereichen mithilfe von Visual Basic-Prozeduren in Excel" entdeckt und hätte nun gerne gewusst, ob es Seiten...
Microsoft Office 22. Februar 2018
Excel VBA Problem mit Find solved
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.