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.

Eigene Funktion funktioniert nur manchmal
#11
Ich habe das jetzt einmal getestet es scheint am Rechner zu liegen. Da es an jedem Rechner andere Zellen sind.

Hey,

Wo kann ich das denn sehen / ändern ? Die Funktion kenne ich leider nicht. @bosko. Wollte eigentlich zitieren hat aber nicht geklappt.
Antworten Top
#12
Gut, dass Du nicht zitiert hast. Das Wort "Bosko" reicht aus.
Antworten Top
#13
@Edgar
ich denke, man kann auch in Spalte n ein x eingeben Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Hallöchen,

Deine Funktion definierst Du so:

Function VorBe(Hersteller As String, Lieferwoche As String, Bestellt As String) As String

Den Parameter für Bestellt holst Du aus Spalte K, dort steht aber ein Datum. Entweder nimmst Du dann in der Funktion statt String Date oder Variant.
Du musst das dann auch bei der Prüfung berücksichtigen:

...
If Bestellt = "" Then
...

wird z.B. zu
...
If Bestellt = 0 Then
...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
Frohes neues,

Leider macht es keinen Unterschied ob Variant / String führt zum selben Ergebnis. 
Ich habe es extra noch einmal getestet. 

Das Problem ist ja auch dass es von Rechner zu Rechner variiert welche Zellen betroffen sind. 

Um noch einmal auf das automatische Berechnrn der Formeln zu kommen. Ich nehme an es war gemeint unter dem Reiter Formeln die Fläche Berechnungsoptionen? Die ist bei mir auf automatisch. 

Hat vielleicht noch jemand eine Idee ? 

Mit freundlichen Gruß
Marvin
Antworten Top
#16
Bosko meinte "Function volatil machen".
Antworten Top
#17
(03.01.2022, 13:16)LCohen schrieb: Bosko meinte "Function volatil machen".

Ok danke, dass wird andere Probleme Vorweggreifen allerdings bleiben etliche Zellen immernoch auf #Wert stehen.

Das Problem ist das er in der Funktion VorBe in der drittletzten Zeile 

Avis = Worksheets(Jahr).Ränge(Zelle) 

manchmal einfach den Wert nicht aus der Zelle holt. 

Alle Zellen sind mithilfe des Pinsels exakt gleich formatiert alle Daten sind genau gleich aufgeschrieben. 

Mit freundlichen Gruß 
Marvin
Antworten Top
#18
Hallöchen,

was steht den in dem Fall in der Variable Zelle?

Code:
Function VorBe(Hersteller As String, Lieferwoche As String, Bestellt As String) As String
        Dim Re As String
        Dim Spalte As Long
        Dim Reihe As Integer
        Dim Jahr As String
        Dim Avis As String
        Dim StartpunktR As Integer
        Dim StartpunktS As Integer
        Dim Zelle As String
        Dim BestellDate As Date
        
        StartpunktR = 4
        StartpunktS = 13
        
        If Bestellt = "" Then
            Reihe = WorksheetFunction.WeekNum(Now, 21)
            Jahr = Year(Now)
        Else
            BestellDate = Bestellt
            Reihe = WorksheetFunction.WeekNum(BestellDate, 21)
            Jahr = Year(Bestellt)
        End If
        
        Reihe = Reihe + StartpunktR
        
        If Hersteller = "Nolte" Then
        Spalte = 1 + StartpunktS
        ElseIf Hersteller = "Nobilia" Then
        Spalte = 2 + StartpunktS
        ElseIf Hersteller = "Artego" Then
        Spalte = 3 + StartpunktS
        ElseIf Hersteller = "Impuls" Then
        Spalte = 4 + StartpunktS
        ElseIf Hersteller = "Eco" Then
        Spalte = 5 + StartpunktS
        ElseIf Hersteller = "Express" Then
        Spalte = 6 + StartpunktS
        ElseIf Hersteller = "Häcker" Then
        Spalte = 7 + StartpunktS
        ElseIf Hersteller = "Decker" Then
        Spalte = 8 + StartpunktS
        End If
        
        
        Zelle = CTL(Spalte) & Reihe

        Avis = Worksheets(Jahr).Range(Zelle)
        
        Re = KWDiff(Avis, Lieferwoche)
              
        VorBe = Re
    
End Function
Function CTL(iCol As Long) As String
   Dim a As Long
   Dim b As Long
   a = iCol
   CTL = ""
   Do While iCol > 0
      a = Int((iCol - 1) / 26)
      b = (iCol - 1) Mod 26
      CTL = Chr(b + 65) & CTL
      iCol = a
   Loop
End Function
Function KWDiff(Avis As String, Lieferwoche As String) As String

    Dim Re As String
    Dim Ende As Date
    Dim Maxwert As Integer
    Dim AnzJ As Integer
    Dim TotalL As String
    Dim PosA As String
    Dim PosL As String
    Dim Zeichen As String
    
    If Right(Avis, 2) >= Right(Lieferwoche, 2) Then
    AnzJ = Right(Avis, 2) - Right(Lieferwoche, 2)
    PosA = InStr(1, Avis, "/", vbTextCompare) - 1
    PosL = InStr(1, Lieferwoche, "/", vbTextCompare) - 1
    TotalL = Left(Avis, PosA)
    Do While AnzJ > 0
    
    Ende = DateValue("Dezember 31," & (Year(Now) + AnzJ - 1))
    Maxwert = WorksheetFunction.WeekNum(Ende, 21)
    
    TotalL = TotalL + Maxwert
    
    AnzJ = AnzJ - 1
    Loop
    Re = TotalL - Left(Lieferwoche, PosL)
    Else
    AnzJ = Right(Lieferwoche, PosL) - Right(Avis, PosA)
    PosL = InStr(1, Lieferwoche, "/", vbTextCompare) - 1
    PosA = InStr(1, Avis, "/", vbTextCompare) - 1
    TotalL = Left(Lieferwoche, PosL)
    Do While AnzJ > 0
    
    Ende = DateValue("Dezember 31," & (Year(Now) + AnzJ - 1))
    Maxwert = WorksheetFunction.WeekNum(Ende, 21)
    
    TotalL = TotalL + Maxwert
    
    AnzJ = AnzJ - 1
    Loop
    Re = Left(Avis, PosA) - TotalL
    End If
    
    
    KWDiff = Re

End Function
Function AusL(Lieferwoche As String, Liefertermin As String) As String

    Dim LieferKW As String
    Dim LieferJahr As String
    Dim TagKW   As String
    Dim TagJahr As String
    Dim Jahr As String
    Dim Woche As String
    Dim Pos As String
    Dim Merker As String
    Dim LieferDate As Date
    Dim Heute As String
    

    Heute = Date
    Merker = 0

    
    Woche = WorksheetFunction.WeekNum(Now, 21)
    Jahr = Year(Now)
    Jahr = Right(Jahr, 2)
    
    Pos = InStr(1, Lieferwoche, "/", vbTextCompare) - 1
    LieferKW = Left(Lieferwoche, Pos)
    LieferJahr = Right(Lieferwoche, 2)
    
    If Liefertermin <> "" Then
        LieferDate = Liefertermin
        If LieferDate < Heute Then
        
            AusL = "Ja"
            Merker = 1
        Else
            AusL = "Nein"
            Merker = 1
        End If
    End If
    If LieferJahr <= Jahr And LieferKW < Woche Then
        
        If Merker = 0 Then AusL = "Ja"
    Else
        If Merker = 0 Then AusL = "Nein"
    End If
    
    Lieferwoche = 1


End Function
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
Hallo Marvin,

ich kann das bestätigen.
Wenn ich in der Zeile Avis = Worksheets(... den Code stoppe und diese Zeile ins Direktfenster kopiere und "Avis = " durch ein "?" ersetze und mit Enter ausführe, gibt es den gewünschten Wert zurück, im Codefenster aber nicht. Ich kann aber nicht sagen, warum das so ist. Undecided

Gruß Uwe
Antworten Top
#20
IN function KWDiff  

wird im Else-zweig Folgendes programmiert. Man beachte PosA und PosL  

Code:
AnzJ = Right(Lieferwoche, PosL) - Right(Avis, PosA)
PosL = InStr(1, Lieferwoche, "/", vbTextCompare) - 1
PosA = InStr(1, Avis, "/", vbTextCompare) - 1

Zu dem wird häufig als String deklariert und dann lustig gerechnet. Man könnte meinen dem Entwickler reichte ein Integer für eine Kalenderwoche nicht aus. Nein, zur Sicherheit lieber ein String.

in VorBe  -  Lieferwoche wird nicht auf leer geprüft und landet in einer Berechnung auch mal als Leerstring.  Auch hier wird String verwendet wo ein Zahlenformat sinnvoller wäre. 
     
Code:
beispielhaft diese Formel in Spalte M
=WENN(J4="";"";WENN(J4="andere";"Separat prüfen";WENN(N4="x";WERT(VorBe(J4;L4;K4))&"x";WERT(VorBe(J4;L4;K4)))))
könnte so aussehen
=WENN(J4="Andere";"Separat prüfen";VorBe(J4;L4;K4)&N4)

in den Arbeitsblättern sind sehr viele bedingte Formatierungen für einzelne Zellen ,die auch für Bereiche definiert werden könnten. Allein in "Checkliste" sind mehr als 2700 bedingte Formatierungen.
Antworten Top


Gehe zu:


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