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.

wenn heutiger Tag gefunden, Makro zum jeweiligen Monat ausführen
#1
Hallo Gemeinde,

ich benutze in einer Datei dieses Makro welches auch funktioniert:

Code:
Sub zuHeutespringen()

    Dim lngZeile As Long
    Dim lngSpalte As Long
    Dim suchDatum As Date

        suchDatum = Date
        lngZeile = 21
        For lngSpalte = Range("N21").Column To Range("XX21").Column
          If IsDate(Cells(lngZeile, lngSpalte).Value) Then
          If CDate(Cells(lngZeile, lngSpalte).Value) = suchDatum Then
             Cells(lngZeile, lngSpalte).Select
            Exit For
        End If
    End If
Next lngSpalte

End Sub

jetzt die Frage, besteht die Möglichkeit den Monat da ins Spiel zu bringen?

zum Beispiel wenn Januar ist dieses Makro auzuführen
Code:
Sub a1Januar()

    Range("A1").Select

End Sub

und wenn Februar ist dieses
Code:
Sub a2Februar()

    Call a1Januar

    Range("CE1").Select

End Sub


bin schon jetzt sehr dankbar für eure Hilfe !!!

Danke !!!
Antworten Top
#2
Hallöchen,

Hier mal ein Ansatz. Du kannst z.B. mit

MsgBox Month(Date)

die Monatszahl ermitteln.

Du kannst z.B. die Zelladressen in ein Array packen

Dim arrAddress
arrAddress = Array("A1", "B2", "C3")
MsgBox arrAddress(2)

und beides kombinieren

...
MsgBox arrAddress(Month(Date))



und anschliessend feststellen, dass da noch irgendwo -1 angebracht wäre Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • kingkong
Antworten Top
#3
Hallo,

der Code findet das aktuelle Datum ohne alle Zellen "durchzuschleifen":

Code:
Sub T_1()
Dim c As Range, Tag As Date, Adr As String

On Error GoTo Gef

Tag = Date

Application.FindFormat.Clear
Application.FindFormat.NumberFormat = "d-mmm"

With ActiveSheet.UsedRange
    Set c = .Find("*", , , , , , , , True)
    Adr = c.Address
    Do
        If CLng(c.Value) = CLng(Tag) Then Exit Do
        Set c = .FindNext(c)
    Loop Until c.Address = Adr
End With

Gef:
If Err Then
    Debug.Print "Datum nicht gefunden"
    Err.Clear
Else
    Debug.Print "Gefunden: ", c
End If

End Sub

Für die 12 Monate sollte es nur einen Code geben, dem aber der aktuelle Monat übergeben wird:

my_Makro(Month©)


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • kingkong
Antworten Top
#4
Danke euch Beiden für Eure investierte Zeit,

aber da bin ich jetzt raus, wollte eigentlich nur das das aktuelle Monatsblatt zentriert dargestellt wird.

Danke Euch trotzdem !!!
Antworten Top
#5
Hallo,

Code:
Sub zuHeutespringen()
    Dim lngZeile As Long
    Dim lngSpalte As Long
    Dim suchDatum As Date

    suchDatum = Date
    lngZeile = 21
    For lngSpalte = Range("N21").Column To Range("XX21").Column
      If IsDate(Cells(lngZeile, lngSpalte).Value) Then
        If CDate(Cells(lngZeile, lngSpalte).Value) = suchDatum Then
          Cells(lngZeile, lngSpalte).Select
          Application.Run "a" & Format(Date, "m") & Format(Date, "mmmm")
          Exit For
        End If
      End If
    Next lngSpalte
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • kingkong
Antworten Top
#6
(12.02.2023, 18:25)kingkong schrieb: Danke euch Beiden für Eure investierte Zeit,

aber da bin ich jetzt raus, wollte eigentlich nur das das aktuelle Monatsblatt zentriert dargestellt wird.

Danke Euch trotzdem !!!

Hallo kingkong,

noch ein kleiner Hinweis zu Uwes Ergänzung im Code :) 

Diese bewirkt, dass deine Subs "a1Januar", "a2Februar", "a3März", etc. gestartet werden, nachdem die eigentliche "Datumszelle" ausgewählt wurde...Voraussetzung ist also, dass du diese Subs bis "a12Dezember" auch geschrieben hast :)

Schönen Abend,
Phiant
[-] Folgende(r) 1 Nutzer sagt Danke an Phiant für diesen Beitrag:
  • kingkong
Antworten Top
#7
Moin!
Scheint mir ein typisches X/Y-Problem zu sein!
Wenn in der Threaderöffnung eine Datei angehangen wäre, hätten wir wahrscheinlich ganz andere Lösungen.
Falls Monatsblätter vorhanden sind (ist eher bäääh!), dann
Worksheets(Month(Date)).Activate
(evtl. den Index um 1 erhöhen, wenn es ein "Deckblatt" gibt)

Falls die Blätter Monatsnamen haben, ginge es auch so
Worksheets(Application.GetCustomListContents(8)(Month(Date))).Activate
• oder Worksheets(Format(Date, "MMMM")).Activate
Wenn dann noch zum aktuellen Datum gesprungen werden soll, dann nach Aktivieren des Sheets
ActiveWindow.ScrollColumn = Day(Date)

Oder gleich in einem Rutsch mit einer anderen Methode:
Application.Goto Worksheets(Format(Date, "MMMM")).Cells(1, Day(Date)), True

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
#8
Hallöchen, king kong

Vor allem wäre eine genauere Aufgabenbeschreibung hilfreich.
Ob mit der bisherigen Aufgabenbeschreibung eine Datei geholfen hätte ..

CE1 gibt's auf jedem Blatt, dazu muss man nicht das Blatt wechseln.. Smile

Aufgabe war im Januar ein Makro mit
Range("A1").Select

und im Februar ein Makro mit
Range("CE1").Select

Uwe's Ansatz ist da doch gut, aber wenn Du lieber mit festen Zelladressen arbeiten willst, da braucht man kein Makro aufzurufen, da reicht (m)ein Ansatz als Zweizeiler oder noch kürzer als Einzeller Smile

MsgBox Array("A1", "B2", "C3")(Month(Date) - 1) 'Gibt die die Daten als Meldung aus

bzw.

Sub Test()
Range(Array("A1", "B2", "C3")(Month(Date) - 1)).Select
End Sub

natürlich dann auf die 12 Monate erweitert und mit den korrekten Zelladressen. Dabei lass ich aber auch gerne den TE mitarbeiten Smile
Es wäre auch kontraproduktiv, wenn Du erst in Deinem bisherigen Code was suchst und selektierst und anschließend eine andere Zelle selektierst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • kingkong
Antworten Top
#9
Danke euch allen vielmals !!!

Ok, eure Kritik nehme ich gerne auf, aber dachte es ist verständlich erklärt Sad .

Habe auch bei dieser Tabelle per E-Mail Hilfe von einem Nutzer erhalten, worüber ich mich sehr gefreut habe.

Also von Kuwer und phiant die Lösung war die, die ich genommen habe.

Und ja vielleicht hätte ich mehr schreiben können, wie z.Bsp. das jeder Monat einzeln steht und dazwischen die aktuellen Urlaubstage wie Überstunden und Kranktage etc. und ich mit den anderen Makros
dann denn Monat zentriert darstellen möchte aber ich dachte diese Informationen braucht ihr nicht da ich ja die Makros geschickt hatte.

Sorry mein Fehler aber Danke Danke Danke euch allen.

es wird nicht meine letzte Frage sein und bei der nächsten mache ich es besser Smile

Gruß der Affe

für euch noch mal grob die Datei.

https://www.clever-excel-forum.de/Thread...29-Februar
Antworten Top


Gehe zu:


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