Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

KW und IF

KW und IF
16.02.2021 09:41:14
Chris
Hallo zusammen
ich habe folgendes Makro, das in Abhängigkeit der KW einer der beiden IF-Funktionen ausführen soll.
Im Sheet MISC, Range V114 steht aktuell 12 (=KW 12) (Formatierung als Text).
Da wir mit heutigem Datum nicht KW12 haben wird trotzdem diese Anweisung ausgeführt.
Weiß jmd. wo der Fehler liegt?

Dim KWnowSTRG, a, b As String
KWnow = DatePart("ww", Date, vbMonday, vbFirstFourDays)
KWnowSTRG = CStr(Format(Date, "ww")) 'aktuelle KW als string - Achtung amerikanisches KW Format
'KWnow = CStr(DatePart("ww", Date, vbMonday, vbFirstFourDays)) 'ISO KW als Textstring
'KWnow1 = CStr(DatePart("ww", Date, vbMonday, vbFirstFourDays) + 1)
a = KWnow
b = KWnow + 1
'-
If KWnow ISTKLEINERALS ActiveWorkbook.Sheets("Misc").Range("V114").Value Then
'KLEINER ZEICHEN GEHT HIER NICHT...
Application.DisplayAlerts = False
'ThisWorkbook.Worksheets.Add.Name = b
'ThisWorkbook.Worksheets.Add.Name = a
Sheets("MISC").Visible = True
Sheets("MISC").Copy after:=Sheets(1)
ActiveSheet.Name = b
ActiveSheet.Range("A1").Value = "KW " & ActiveSheet.Name
Sheets(1).Range("V114").Value = b
Sheets("MISC").Copy after:=Sheets(1)
ActiveSheet.Name = a
ActiveSheet.Range("A1").Value = "KW " & ActiveSheet.Name
Sheets(2).Range("V114").Value = a
Sheets("MISC").Visible = False
Dim wks As Worksheet
For Each wks In Worksheets
Select Case wks.Name
Case "MISC", a, b 'Sheets bei denen nichts passiert
Case Else
wks.Delete
End Select
Next
Call NewKWs
End If
'-
'--
If KWnow = ActiveWorkbook.Sheets("Misc").Range("V114").Value Then
Application.DisplayAlerts = False
Dim wks2 As Worksheet
For Each wks2 In Worksheets
Select Case wks2.Name
Case "MISC", a, b 'Sheets bei denen nichts passiert
Case Else
wks2.Delete
End Select
Next
Call NewKWs
End If
'--

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: KW und IF
16.02.2021 09:44:08
Chris
Anm: Es wird trotzdem die Anweisung
If KWnow ISTKLEINERALS ActiveWorkbook.Sheets("Misc").Range("V114").Value Then...
ausgeführt
AW: KW und IF
16.02.2021 09:49:22
Werner
Hallo,
und warum steht da die Kalenderwoche als TEXT drin und nicht als Zahl?
Du willst einen Text auf größer/kleiner prüfen?!?
Meinst du so was würde gehen?
If "Banane" 
Gruß Werner
das geht!
16.02.2021 09:53:18
Rudi
Hallo Werner,
Versuch doch mal:
Sub aaa()
MsgBox "Banane" 
a kommt halt vor i
Gruß
Rudi
AW: das geht!
16.02.2021 09:58:14
Chris
Sorry, ich meinte ist größer als....nicht kleiner
AW: Vergleich von Werten
17.02.2021 04:51:18
Werten
Hallo Chris,
beim Vergleichen von Variablen-Werten und/oder Zellinhalten muss man darauf achten, dass gleiche Variablentypen verglichen Werten.
In deinem Fall ist KWnow ein nummerischer Wert.
Wenn in der Zelle V114 die KW als Text steht, dann ist 12 verschieden von "12".
Oft macht Excel bei Zahl-Texten automatische Zahlumwandlungen, aber nicht immer.
Deshalb ist die Deklaration von Variablen mit dem gewünschten Typ wichtig und die Umwandlung von Textzahlen in nummerische Werte, falls erforderlich.
Beim Deklarieren von Variablen muss ggf. jeder einzelnen Variable mit As ein Typ zugewiesen werden. Es reicht nicht nur der letzten Variablen den für alle Variablen in einer Zeile gewünschten Typ zuzuweisen.
Noch ein Tipp: Wenn du im VBA-Editor im Menüe "Ansicht" das Lokal-Fenster einblendest, dann kannst du dir die Werte/Typen der Variablen ansehen, wenn du ein Makro im Schrittmodus abarbeitest.
LG
Franz
Nachfolgend dein Makro entsprecht angepasst/ergänzt.
Sub Test()
Dim KWnow As Integer
Dim KWnowSTRG As String, a As String, b As String
KWnow = DatePart("ww", Date, vbMonday, vbFirstFourDays)
KWnowSTRG = CStr(Format(Date, "ww")) 'aktuelle KW als string - Achtung amerikanisches KW  _
Format
'KWnow = CStr(DatePart("ww", Date, vbMonday, vbFirstFourDays)) 'ISO KW als Textstring
'KWnow1 = CStr(DatePart("ww", Date, vbMonday, vbFirstFourDays) + 1)
a = Format(KWnow, "0")
b = Format(KWnow + 1, "0")
If KWnow  in der Zeile oberhalb ggf. noch anpassen
Application.DisplayAlerts = False
'ThisWorkbook.Worksheets.Add.Name = b
'ThisWorkbook.Worksheets.Add.Name = a
Sheets("MISC").Visible = True
Sheets("MISC").Copy after:=Sheets(1)
ActiveSheet.Name = b
ActiveSheet.Range("A1").Value = "KW " & ActiveSheet.Name
Sheets(1).Range("V114").Value = b
Sheets("MISC").Copy after:=Sheets(1)
ActiveSheet.Name = a
ActiveSheet.Range("A1").Value = "KW " & ActiveSheet.Name
Sheets(2).Range("V114").Value = a
Sheets("MISC").Visible = False
Dim wks As Worksheet
For Each wks In Worksheets
Select Case wks.Name
Case "MISC", a, b 'Sheets bei denen nichts passiert
Case Else
wks.Delete
End Select
Next
Call NewKWs
End If
If KWnow = Val(ActiveWorkbook.Sheets("Misc").Range("V114").Value) Then
Application.DisplayAlerts = False
Dim wks2 As Worksheet
For Each wks2 In Worksheets
Select Case wks2.Name
Case "MISC", a, b 'Sheets bei denen nichts passiert
Case Else
wks2.Delete
End Select
Next
Call NewKWs
End If
End Sub

Anzeige
AW: KW und IF
16.02.2021 09:48:43
Rudi
Hallo,
7 ist doch &lt 12.
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige