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.

Macro - Kalenderwoche
#1
Guten Tag zusammen,

ich bin ganz neu hier - kurz zu mir, ich heiße Marc-David, bin 24 aus BW und dualer Student seit kurzem.
Nun wurde mir eine Aufgabe mit einem Excel sheet gegeben.

Ich weiß leider nicht wie ich danach genau suchen soll.


Meine Frage ist, ich habe auf Seite 1 eine Tabelle mit Zahlen, diese Zahlen möchte ich auf Seite 7 in AM4-7 einfügen. Soweit habe ich es auch per Makro hinbekommen.
Ich kopiere die einzelnen Zahlen aus der Tabelle Seite 1 in die Tabelle Seite 7.
Der Gedanke ist jetzt, die Werte auf Seite 1 ändern sich wöchentlich, ich möchte per Makro, Knopfdruck, es jetzt schaffen, dass mein Makro weiß: Hey heute ist Kalenderwoche 41 also dort einfügen, nächste Woche dann, hey heute ist Kalenderwoche 42 also in AN4-7 einfügen und so weiter.
Ist dies möglich?

Schöne Grüße
Marc-David
Antworten Top
#2
Schon wieder ein CP
https://www.ms-office-forum.net/forum/sh...p?t=362986
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • schauan
Antworten Top
#3
Hallöchen,

Du kannst beim Range einen Offset verwenden. Wenn bei Range("AM7") z.B. die Daten der KW1 stehen rechnest Du von Range("AL7") aus die KW-Nummern dazu. Allerdings berücksichtigt das erst mal die Jahreswechsel nicht. Dazu später eine Alternative.

Hier mal der Ansatz zum probieren:

Code:
Sub test()
Dim iWeek%
iWeek = WorksheetFunction.WeekNum(Date, 21)
MsgBox Range("AL7").Offset(, iWeek).Address
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Moin!
Nur ergänzend der Hinweis, dass VBA die KW auch selbständig errechnen kann und nicht auf eine Excel-Funktion ausweichen muss.
Dies ist hier im Excel-Forum zwar unerheblich, macht aber Sinn, wenn man die KW in anderen Office-Programmen per VBA ermitteln will.
PHP-Code:
DatePart("ww"DatevbMondayvbFirstFourDays

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • schauan
Antworten Top
#5
Hi

Hinweis zum Hinweis.
DatePart ist aber für KW's in Normalverwendung nicht fehlerfrei.
Code:
DatePart("ww", "30.12.2019", vbMonday, vbFirstFourDays)

https://www.vbarchiv.net/tipps/tipp_1662...vbnet.html

Gruß Elex
Antworten Top
#6
Ja, der little Bug ist auch mir bekannt, Elex!
Wenn ich mich recht erinnere, betrifft es aber nur Jahre, in denen der 29.12. ein Montag ist.
Für den Dienstag (30.12.) ist wieder alles roger.
Ich schreibe aber mal flugs ein Programm, welches alle Tage dieses Jahrhunderts mit der Worksheetfunction vergleicht …

Update!
Es betrifft den letzten Montag des Jahres.
Von den 36.191 Tagen dieses Jahrhunderts rechnet Datepart 11-mal falsch.
Ist zwar 11-mal zuviel, aber relativ überschaubar …

Wer es nachprüfen will:
Sub Bug_Report()
Dim KW_VBA&, WSF_KW&, i&
Const Beginn& = 36526 '01.01.2000 
Const Ende& = 72716 '31.12.2099 
For i = Beginn To Ende
  KW_VBA = DatePart("ww", CDate(i), vbMonday, vbFirstFourDays)
  WSF_KW = WorksheetFunction.WeekNum(CDate(i), 21)
  If KW_VBA <> WSF_KW Then Debug.Print Format(CDate(i), "ddd, dd.mm.yy")
Next
End Sub

Ergibt im Direktfenster:
PHP-Code:
Mo29.12.03
Mo
31.12.07
Mo
30.12.19
Mo
29.12.31
Mo
31.12.35
Mo
30.12.47
Mo
29.12.59
Mo
31.12.63
Mo
30.12.75
Mo
29.12.87
Mo
31.12.91 

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


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