Registriert seit: 29.12.2021
Version(en): 365
30.12.2021, 16:02
(Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2021, 16: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, 12:36
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2022, 12:36 von AwesomeBaba.)
(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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
04.01.2022, 16:42
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2022, 16: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): 2021
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.
|