Pull Down Menü

Hallo nochmal,
bin mit meiner Urlaubsplanung (Tabelle) schon etwas weitergekommen, jedoch habe ich eine neue Frage:
Wie funktioniert das mit Pull down Menü? So dass ich unter einem Mitarbeiter, die Daten zu denjenigen sehe?
Ich habe also:
Mitarbeiter A B C D … und möchte aus denen B auswählen. Was muss ich da ausführen um dies realisieren zu können?
Habe nämlihch noch nie mit soetwas gearbeitet, weiß jedoch dass es sowas gibt.
Vielen Dank für die Bemühungen

hm, ich weis nicht genau, was du mit einem pull-down-menü meinst, aber ich glaube das solltest du dann mit den activex-steuerelementen realisieren können.

ich habe hier noch eine ganz nette sache, die für dich auch interesannt sein dürfte. dieses macro berechnet dir, wenn du ein anfangsdatum und ein enddatum eingibst, wieviele arbeitstage dazwischen liegen.
natürlich berücksichtigt sind feiertage wie ostern, weihnachten und andere, und auch die wochenenden.

bei fragen, einfach mir ne mail schicken, und wenn du hilfe genauere hilfe brauchst, dann kannst du mir auch die tabelle zuschicken und ich setze mich ran :wink:

gruß Micha

und hier der quellcode für die feiertage:

Option Explicit
'=============================================================
’ Zweck : Ermittlung der Arbeitstage aus einem vorge-
’ gebenen Zeitraum ausgehend vom Osterdatum der
’ (des) jeweiligen Kalenderjahre(s)
’ Autor : Michael Hornung

'=============================================================

Function ARBEITSTAGE(beginn As Date, _
Optional ende) As Single
'Ermitteln der Anzahl der Arbeitstage mit Hilfe der Funktionen
'„Feiertag()“ und „Wochenende()“.

Dim datPrüftag As Date
Dim intJahr As Integer
Dim intAltJahr As Integer
Dim datOstern As Date
Dim strFeiertag As String
Dim blnWochenende As Boolean
Dim a As Date

On Error GoTo Err_Function

intJahr = Year(beginn)

Select Case ende
Case 0
ende = beginn
Case 1
beginn = DateSerial(intJahr, Month(beginn), 1)
ende = DateSerial(intJahr, Month(beginn) + 1, 0)
Case 2
beginn = DateSerial(intJahr, 1, 1)
ende = DateSerial(intJahr, 12, 31)
Case Else
If IsDate(beginn) = False Or _
IsDate(ende) = False Then
Exit Function
Else
ende = CDate(ende)
End If
End Select

If beginn > ende Then
a = ende
ende = beginn
beginn = a
End If

If beginn CDate(„31.12.2100“) Then
ARBEITSTAGE = 0
Exit Function
End If

datPrüftag = beginn
intAltJahr = Year(datPrüftag)
datOstern = OsterDatum(intAltJahr)

Do While datPrüftag intAltJahr Then
intAltJahr = Year(datPrüftag)
datOstern = OsterDatum(intAltJahr)
End If

If strFeiertag = „Heiliger Abend“ And _
blnWochenende = False Or _
strFeiertag = „Silvester“ And _
blnWochenende = False Then
ARBEITSTAGE = ARBEITSTAGE + 0.5
Else
If blnWochenende = False And _
Feiertag(datPrüftag, datOstern) = „“ Then
ARBEITSTAGE = ARBEITSTAGE + 1
End If
End If
datPrüftag = DateValue(datPrüftag + 1)
Loop

Exit_Function:
Exit Function

Err_Function:
MsgBox „VBA-Error: " & Err.Number & vbCr & vbCr & Err.Description, _
vbCritical, ThisWorkbook.Name & " - ‚Arbeitstage()‘“
Resume Exit_Function
End Function

Function Wochenende(Datum As Date) As Boolean
'Prüfung, ob der Wochentag des übergebenen Datumswertes
'auf einen Samstag oder Sonntag fällt

On Error GoTo Err_Function

If Weekday(Datum) = 1 Or _
Weekday(Datum) = 7 Then
Wochenende = True
Else
Wochenende = False
End If

Exit_Function:
Exit Function

Err_Function:
MsgBox „VBA-Error: " & Err.Number & vbCr & vbCr & Err.Description, _
vbCritical, ThisWorkbook.Name & " - ‚Wochenende()‘“
Resume Exit_Function
End Function

Function Feiertag(Datum As Date, _
Optional datOstern As Date) As String
'Prüfung, ob auf das übergebene Datum ein Feiertag fällt (ausgehend
'vom mitHilfe der Funktion „Osterdatum()“ ermittelten Osterdatum)

Dim intJahr As Integer

On Error GoTo Err_Function

intJahr = Year(Datum)

If datOstern = 0 Then
datOstern = OsterDatum(intJahr)
End If

Select Case Datum
Case DateSerial(intJahr, 1, 1)
Feiertag = „Neujahr“
Case datOstern - 2
Feiertag = „Karfreitag“
Case datOstern
Feiertag = „Ostersonntag“
Case datOstern + 1
Feiertag = „Ostermontag“
Case DateSerial(intJahr, 5, 1)
Feiertag = „Maifeiertag“
Case datOstern + 39
Feiertag = „Christi Himmelfahrt“
Case datOstern + 49
Feiertag = „Pfingstsonntag“
Case datOstern + 50
Feiertag = „Pfingstmontag“
Case datOstern + 60
Feiertag = „Fronleichnam“
Case DateSerial(intJahr, 10, 3)
Feiertag = „Tag der Deutschen Einheit“
Case DateSerial(intJahr, 12, 24)
Feiertag = „Heiliger Abend“
Case DateSerial(intJahr, 12, 25)
Feiertag = „1. Weihnachtsfeiertag“
Case DateSerial(intJahr, 12, 26)
Feiertag = „2. Weihnachtsfeiertag“
Case DateSerial(intJahr, 12, 31)
Feiertag = „Silvester“
Case Else
Feiertag = „“
End Select

Exit_Function:
Exit Function

Err_Function:
MsgBox „VBA-Error: " & Err.Number & vbCr & vbCr & Err.Description, _
vbCritical, ThisWorkbook.Name & " - ‚Feiertag()‘“
Resume Exit_Function
End Function

Function OsterDatum(jahr) As Date
'Für die Berechnung von Feiertagen gilt:
’ - unbewegliche Feiertage finden in jedem Jahr am gleichen Tag statt
’ - bewegliche Feiertage sind in der Zeitspanne relativ zueinander
'Wenn man also das Datum eines beweglichen Feiertages ermitteln kann,
'so kennt man auch die Daten der übrigen beweglichen Feiertage

'Diese Function-Prozedur errechnet anhand eines Algorithmus von Gauss
'das Datum des Ostersonntages für ein angegebenes Jahr. Alle be-
'weglichen Feiertage lassen sich zu diesem Datum ins Verhältnis
'setzen.

'QUELLE:
'=======
'Die Function-Prozedur „OsterDatum“ ist dem Buch
'„VBA-Programmierung mit Excel 97“ von Michael Kofler
'(Addison-Wesley Verlag; ISBN 3-8273-1207-8 Buch anschauen)
'entnommen.

'Michael Gmeiner

Dim ZR1 As Integer
Dim ZR2 As Integer
Dim ZR3 As Integer
Dim ZR4 As Integer
Dim ZR5 As Integer
Dim ZR6 As Integer
Dim ZR7 As Integer

On Error GoTo Err_Function

ZR1 = jahr Mod 19 + 1

ZR2 = Fix(jahr / 100) + 1

ZR3 = Fix(3 * ZR2 / 4) - 12

ZR4 = Fix((8 * ZR2 + 5) / 25) - 5

ZR5 = Fix(5 * jahr / 4) - ZR3 - 10

ZR6 = (11 * ZR1 + 20 + ZR4 - ZR3) Mod 30

If (ZR6 = 25 And ZR1 > 11) Or ZR6 = 24 Then ZR6 = ZR6 + 1

ZR7 = 44 - ZR6

If ZR7

Genau die activex-steuerelemente meinte ich, aber ich glaube, dass ist doch noch eine Nummer zu hoch für mich - denn ich bin ja fast noch ein Anfänger in Sachen Excel und somit weiß ich noch nichteinmal, wie ich das Makro abspeichern muss… und wie ich es dann anwende (sind da auch Feiertage dabei, die Berlin nicht als Feiertag hat?).
Trotzdem vielen Dank für die Hilfe
Sandra

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

die feiertage kann ich dir einzeln eintragen. schick mir den ganzen kram per mail und morgen hast du des ganze fertig.

und die feiertage von berlin soll ich eintragen ja?

kein prob

Gruß Micha

Hallo Sandra

Das mit der Urlaubplanung, hat sich wie ich lese ja schon erledigt.
Aber vielleicht kannst du es ja für etwas anderes brauchen :o)
Es gibt noch was außer activex-steuerelemente.

Mitarbeiter A B C D … und möchte aus denen B auswählen. Was
muss ich da ausführen um dies realisieren zu können?
Habe nämlihch noch nie mit soetwas gearbeitet, weiß jedoch
dass es sowas gibt.

Erste und einfachste Möglichkeit, du gehst auf Daten, Gültigkeit, Liste.
Dann musst du nur den Bereich wo deine Daten stehen auswählen.
Du kannst dann auch festlegen ob du nur Werte aus der Liste auswählen kannst, oder ob du auch was in das Feld reinschreiben kannst.

Zweite Möglichkeit du gehtst auf Ansicht, Symbolleisten, Formular.
Diese „Steuerelemte“ sind einfacher zu beherschen als die „richtigen“.
Geh einfach auf „Steuerelement formatieren“ unter Steuerung.
Buttons kannst du z.B. direkt ein aufgezeichnetes Makro zuweisen.
Nachteil: Es werden in der Ausgabezelle nur Zahlen ausgegeben.
Aber mit ein bisschen tüfteln kann man damit schöne Sachen basteln.

Hoffe das hat dir was geholfen

Gruß Andi