Thema Datum  Von Nutzer Rating
Antwort
Rot Schichtplan mittels VBA
10.06.2014 13:42:18 Luca160
NotSolved

Ansicht des Beitrags:
Von:
Luca160
Datum:
10.06.2014 13:42:18
Views:
1482
Rating: Antwort:
  Ja
Thema:
Schichtplan mittels VBA

Hallo zusammen,

ich habe eine"Aufgabe", welche ich allein nicht hinbekomme. Ich wollte nicht Problem sagen :wink:

Es soll ein Schichtplan für 24 Personen erstellt werden.
Es gibt nur Früh- oder Spätschicht und nur die Arbeitstage Montag bis Freitag.

Einige Personen können nur Früh-, oder nur Spätschicht leisten
Diese Daten (Ausschlußkriterien) stehen im aktuellen Arbeitsblatt in C3:C27
"S" bedeutet, die Person kann nur Frühschicht, "F" bedeutet, die Person kann nur Spätschicht, "" bedeutet, die Person ist flexibel.
 

Darüber hinaus sollen die Personen max 2 Schichten je Woche leisten
und
je Wochentag sollen max 2 Früh- & 2 Spätschichten eingeteilt werden.

Klar soweit?? :roll:

Der Schichtplan soll im aktuellen Arbeitsblatt auf Knopfdruck im Bereich F3:J27 erstellt werden (Array von 24 Personen x 5 Wochentage)

Ich habe es mit Formeln in den Zellen versucht:
Das ist dann aber statisch und die Verzweigungen werden so unübersichtlich, dass ich nicht mehr durchsteige.

Ich habe einen Entwurf, an dem ich immer wieder rumbastele, bekomme aber ständig wechselnde Fehlermeldungen :(

Ich kriegs nicht hin.

Kann mir hier jemand helfen?
 

Option Explicit
Sub Schichtplan()

Dim sPlan(), Vorgabe() As Variant
Dim i, k, zf, zs, zt

    Vorgabe() = Range("C3:C27")

    For k = 0 To 4
        For i = 0 To 24
            If zs <= 2 Then
                If Vorgabe(1, i) = "F" Then
                    sPlan(i, k) = "S"
                    zs = zs + 1
                    zt = zt + 1
                    MsgBox Vorgabe(1, i), vbOKOnly
                Else
                    sPlan(i, k) = "F"
                    zf = zf + 1
                    zt = zt + 1
                End If
            ElseIf zf <= 2 Then
                If Vorgabe(1, i) = "F" Then
                    sPlan(i, k) = "S"
                    zs = zs + 1
                    zt = zt + 1
                Else
                    sPlan(i, k) = "F"
                    zf = zf + 1
                End If
            Else
                sPlan(i, k) = ""
            End If
        Next i
    Next k
    Range("F3:J27") = sPlan
    
End Sub

Ich möchte den Inhalt der Spalte C von C3:C27 in ein Array speichern
Dieses Array (der Bereich) beinhaltet Bedingungen.

Per Schleife und Bedingungsabfrage sollen Werte in ein weiteres Array gespeichert werden und dieses Array
in der Tabelle in den Bereich F3:J27 zurück gegeben werden.

Eigentlich ganz leicht, wenn man's kann. Ich kann's dann wohl nicht.

Immer in Zeile 20 im Code {sPlan(i, k) = "F"} bekomme ich die Fehlermeldung:
Laufzeitfehler'9':
Index außerhalb des gültigen Bereichs


Warum bekomme ich diese Fehlermeldung erst beim zweiten Zugriff auf das entsprechende Array?
Der erste Zugriff (in der If-Abfrage / 4 Zeilen früher) funktioniert ja. Wird zumindest nicht mit einer Fehlermeldung quittiert;-)
Versteh ich nicht :?

Über Hilfe würde ich mich freuen.

Gruß, Luca160


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Schichtplan mittels VBA
10.06.2014 13:42:18 Luca160
NotSolved