Registriert seit: 29.12.2021
Version(en): 365
30.12.2021, 17:02
(Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2021, 17:04 von AwesomeBaba.)
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.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
Gut, dass Du nicht zitiert hast. Das Wort "Bosko" reicht aus.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
@Edgar ich denke, man kann auch in Spalte n ein x eingeben
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 29.12.2021
Version(en): 365
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
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
Bosko meinte "Function volatil machen".
Registriert seit: 29.12.2021
Version(en): 365
04.01.2022, 13:36
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2022, 13:36 von AwesomeBaba.)
(03.01.2022, 14: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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
04.01.2022, 17:42
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2022, 17:43 von schauan.)
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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.  Gruß Uwe
Registriert seit: 12.06.2020
Version(en): 2024, 365business
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.
|