Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Uplaner Hilfe Dirk aus Dubai | Herbers Excel-Forum


Betrifft: Uplaner Hilfe Dirk aus Dubai von: Burkhard
Geschrieben am: 09.01.2012 11:04:12

Hallo Dirk, danke für deine Hilfe,
dein Makro rechnet scheinbar wirklich in der Geschwindikkeit die Ich mir erhofft hatte, nur leider ist hier wohl noch ein kleiner Fehler drin.
Beim ersten öffnen, da zeigt er mir noch für Max Mustermann 7 die einträge noch an, aber sobald ich etwas änder läuft das Makro nicht mehr.
Die anderen Mitarbeiter werden leider garnicht angezeigt.
Nur zum verständniss nochmal, deine annahme war vollkommen korrekt, es sollen aus dem Tabellenblatt Urlaubseinträge Spalte H:H die Kürzel im Kalender Tabellenblatt 1. Quartal 2012 eingetragen werden.

Die Formel sollte rechnen, sobal ich im Tabellenblatt 1. Quartal 2012 oder Urlaubseinträge eine änderung vornehme.

Es wäre schön wenn du dir das nochmal anschaust.

Vielen dank und schöne Grüße aus dem verregneten Deutschland
Burkhard

  

Betrifft: AW: Uplaner Hilfe Dirk aus Dubai von: Dirk aus Dubai
Geschrieben am: 09.01.2012 11:50:46

Hallo Burkhard,

ersetze mal das Makro im Tabellenblatt Urlaubseintraege durch dieses:

Sub Urlaub_eintragen(Target As Range)
'dieses Makro traegt den Eingetragenen Urlaub in das Blatt '1. Quartal 2012' ein
Dim i As Long
Dim MaName As String
Dim FirstD As Date
Dim LastD As Date
Dim AnzTage As Long
Dim UTyp As String
'Mitarbeiter Name lesen
MaName = Cells(Target.Row, 3).Value
'ersten Urlaubstag lesen
FirstD = Cells(Target.Row, 4).Value
'letzten urlaubstag lesen
LastD = Cells(Target.Row, 5).Value
'Anzahl Kalendertage bestimmen
AnzTage = (LastD - FirstD) + 1
'Abwesenheitstyp auslesen
UTyp = Cells(Target.Row, 8).Value

'MsgBox "Anzahl Kalendertage: " & AnzTage & vbCrLf & _
       "Anzahl Urlaubstage: " & Target.Offset(0, 2).Value

'Erste Zelle im Quartalsblatt bestimmen
Set targetsh = ThisWorkbook.Sheets("1. Quartal 2012")
With targetsh.Columns(3).Cells
    Set myfind = .Find(what:=MaName, LookIn:=xlValues, lookat:=xlWhole)
    If Not myfind Is Nothing Then
        'MaName wurde gefunden
        targetRow = myfind.Row
        'Ersten Tag des Urlaubs Zeile 4 in Blatt finden
        For i = 5 To 95
            Debug.Print targetsh.Cells(4, i).Value
            If targetsh.Cells(4, i).Value = FirstD Then
                'Datum gefunden
                'Schleife zum Eintragen der Urlaubstage
                Application.EnableEvents = False
                For j = i To i + AnzTage - 1
                    'pruefen ob Wochentag oder Wochenende,
                    'falls auch Fehltage an Wochenenden angezeigt werden sollen, dann  _
auskommentieren
                    Debug.Print targetsh.Cells(7, i).Value
                    If targetsh.Cells(7, j).Value <> "" Then
                        targetsh.Cells(targetRow, j).Value = UCase(UTyp)
                    End If
                Next j
                Application.EnableEvents = True
                Exit For
            End If
        Next i
        If i > 95 Then
            'Datum nicht gefunden, Hinweis
            MsgBox "Das Anfangsdatum des Urlaubs konnte im Blatt  '" & targetsh.Name & "'   _
nicht gefunden werden." & vbCrLf & _
            "Bitte Tabellenblatt und Urlaubsdaten pruefen!", 48, "Kein Urlaub eingetragen!"
            Exit Sub
        End If
    Else
        'MaName nicht gefunden, hinweiss
        MsgBox "Der Mitabrbeiter " & MaName & " konnte im Blatt '" & targetsh.Name & " nicht  _
gefunden werden!" & vbCrLf & _
               "Bitte Blatt  '" & targetsh.Name & "'  pruefen!", 48, "Urlaub nicht eingetragen!" _

        Exit Sub
    End If
End With
End Sub
Lass' hoeren, ob ok.

Gruss

Dirk aus Dubai


  

Betrifft: AW: Uplaner Hilfe Dirk aus Dubai von: Burkhard
Geschrieben am: 09.01.2012 15:32:42

Hallo Dirk,
ich habe das Makro jetzt eingebaut, es läuft schon viel besser!!!!
Aber kleine Probleme habe ich noch festgestellt.
So ist es zum Beispiel, das wenn ich mit dem Steuerelement im Tabellenblatt 1. Quartal 2012 den Monat oder den Mitarbeiternamen wechsel, dann berechnet er nicht den Kalender neu.
Weiterhin, scheint er im Tabellenblatt Urlaubseinträge nur immer den neusten Eintrag zu berechen, besser wäre es aber, das dann immer alle Einträge aktuallisiert werden.
Wenn Ich einen Urlaubseintrag eingebe, der für einen zuküntigen Monat ist, der derzeit nicht im Kalender angezeigt wird, dann gibt er eine Fehlermeldung aus, den Bereich habe ich im Makro auch schon gefunden, mal sehen ob ich das Problem auch selber gelöst bekomme, ich tüftel ja auch gern mal selber ;-)

Also wir kommen echt schon vorran, ich glaube das teil wird klasse, danke für deine Hilfe!!!!

Grüße Burkhard


  

Betrifft: AW: Uplaner Hilfe Dirk aus Dubai von: Dirk aus Dubai
Geschrieben am: 11.01.2012 08:43:26

Hallo Burkhard,

anbei mal eine angepasste Datei. Ich habe das Blatt auf Iso-Wochennummerierung umgestellt, damit die Kalenderwochen wie in Papierkalendern erscheinen.
Neuberechnung des Kalenders erfolgt immer wenn das Blatt ueber die Kontrollpfeile geaendert wird (Monats/Jahresaenderung) sowie wenn ein Name in Spalte C geaendert wird.
Im Blatt Urlaubseintraege erfolgt ein Eintrag nur fuer den eingestellten Monat/Quartalsteil.

https://www.herber.de/bbs/user/78358.xlsm

Lass' hoeren, ob ok.

Gruss

Dirk aus Dubai