Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("Q3:Q14")) Is Nothing Then
With Target
Cancel = True
MsgBox "Zelle " & Target.Address & " wurde doppelgeklickt." ' das kann weg, ist nur zum Test
Range("F:F").AutoFilter Field:=1, _
Operator:=xlFilterDynamic, _
Criteria1:=xlFilterAllDatesInPeriodJanuary
' hier Aktionen mit der Zelle
End With
' Call Filtern
'Makroaufruf
End If
End Sub
Das funktioniert soweit, aber nur für den Januar.
Criteria1:=xlFilterAllDatesInPeriodJanuaryimmer in den Monat ändern.
Criteria1:=xlFilterAllDatesInPeriodMai
Criteria1:=xlFilterAllDatesInPeriodAugust
Criteria1:=xlFilterAllDatesInPeriodJanuary
Sub MonatInZahl2()
Dim monatText As String
Dim monatZahl As Integer
monatText = "Mai"
Select Case LCase(monatText)
Case "januar", "jan": monatZahl = 1
Case "februar", "feb": monatZahl = 2
Case "märz", "mär": monatZahl = 3
Case "april", "apr": monatZahl = 4
Case "mai": monatZahl = 5
Case "juni", "jun": monatZahl = 6
Case "juli", "jul": monatZahl = 7
Case "august", "aug": monatZahl = 8
Case "september", "sep": monatZahl = 9
Case "oktober", "okt": monatZahl = 10
Case "november", "nov": monatZahl = 11
Case "dezember", "dez": monatZahl = 12
Case Else: monatZahl = 0 ' Ungültig
End Select
MsgBox monatZahl ' Gibt 6 aus
End Subund das hier
Dim aMonthName, aMonthNumber 'Array
Cancel = True
aMonthName = Array("Januar", "Februar", "März", "April", "May", "Juni", "July", "August", "September", "October", "November", "December")
aMonthNumber = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
sMonth = Left(sDate, 3)
For i = 0 To UBound(aMonthName)
If aMonthName(i) = sMonth Then
sMonth = aMonthNumber(i)
End If
Next i
| A | B | C | D | E | F | G | H | I | J | K | |
| 1 | Nachname | Vorname | GebDat | Alter | Monat | August | Januar | ||||
| 2 | NN_01 | VN_01 | 15.08.1992 | 33 | Nachname | Vorname | GebDat | Alter | Februar | ||
| 3 | NN_02 | VN_02 | 01.04.1968 | 58 | NN_05 | VN_05 | 02.08.1995 | 31 | März | ||
| 4 | NN_03 | VN_03 | 22.06.1991 | 35 | NN_07 | VN_07 | 06.08.1974 | 51 | April | ||
| 5 | NN_04 | VN_04 | 29.06.1963 | 63 | NN_01 | VN_01 | 15.08.1992 | 33 | Mai | ||
| 6 | NN_05 | VN_05 | 02.08.1995 | 31 | NN_09 | VN_09 | 19.08.1961 | 64 | Juni | ||
| 7 | NN_06 | VN_06 | 31.01.1992 | 34 | Juli | ||||||
| 8 | NN_07 | VN_07 | 06.08.1974 | 51 | August | ||||||
| 9 | NN_08 | VN_08 | 25.05.1968 | 58 | September | ||||||
| 10 | NN_09 | VN_09 | 19.08.1961 | 64 | Oktober | ||||||
| 11 | NN_10 | VN_10 | 11.02.1982 | 44 | November | ||||||
| 12 | NN_11 | VN_11 | 20.12.1976 | 49 | Dezember | ||||||
| 13 | NN_12 | VN_12 | 17.06.2010 | 16 | |||||||
| 14 | NN_13 | VN_13 | 14.04.1979 | 47 | |||||||
| 15 | NN_14 | VN_14 | 29.07.1966 | 60 | |||||||
| 16 | NN_15 | VN_15 | 05.11.1996 | 29 |
| Zelle | Formel |
| D2 | =DATEDIF(C2;HEUTE();"y") |
| F3 | =LET(
f;FILTER(A2:.D1000;TEXT(C2:.C1000;"MMMM")=G1;""); SORTIERENNACH(f;TAG(SPALTENWAHL(f;3)))) |
| Zelle | Gültigkeitstyp | Operator | Wert1 | Wert2 |
| G1 | Liste | =$K$1:$K$12 |
...
MsgBox monatZahl ' wird bei mir 5 ausgegeben; also alles wie von dir gewünscht
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const cMonatskonstante = 21
Dim lngMonat As Long
If Not Intersect(Target, Range("Q3:Q14")) Is Nothing Then
lngMonat = Target.Row - 2 + cMonatskonstante
With Target
Cancel = True
MsgBox "Zelle " & Target.Address & " wurde doppelgeklickt." ' das kann weg, ist nur zum Test
Range("F:F").AutoFilter Field:=1, _
Operator:=xlFilterDynamic, _
Criteria1:=lngMonat 'xlFilterAllDatesInPeriodJanuary
' hier Aktionen mit der Zelle
End With
' Call Filtern
'Makroaufruf
End If
End Sub
Function Monatszahl&(Monatsname$)
With Application
Monatszahl = .Match(Monatsname, .GetCustomListContents(8), 0)
End With
End Function
Sub Test()
Debug.Print Monatszahl("September")
End Sub
Sub M_snb()
MsgBox Month(CDate("01-" & "September"))
End Sub