Anzeige
Archiv - Navigation
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro übertragen und abändern

Makro übertragen und abändern
05.09.2005 14:42:28
Dietmar
Hallo!
Ich habe gestern von Herbert H. einen Code für meinen Jahresschichtkalender erhalten der perfekt funktioniert.
'Public

Sub Schicht_eintr()
Dim sArr, i%, s As Byte, x$, a As Byte, wt As Byte
Dim w As Byte, z As Byte
sArr = Array("I", "II", "Sp", "III", "D")
On Error GoTo ende
With Selection
x = .Value
i = 5
s = .Column
End With
Select Case x
Case sArr(0): a = 0
Case sArr(1): a = 1
Case sArr(2): a = 2
Case sArr(3): a = 3
Case sArr(4): a = 4
End Select
With ActiveSheet
wt = Weekday(.Cells(i, s - 4))
If Selection.Value = "II" And wt = 2 Then Exit Sub
If a = 1 And wt = 1 Then
Cells(i, s) = sArr(4)
i = i + 1
a = a + 1
End If
If wt = 2 Then a = a + 1
If a = 5 Then a = 0
If a = 1 Then z = 7 Else: z = 1
If wt = 1 Then z = 1
Do
.Cells(i, s) = sArr(a)
wt = Weekday(.Cells(i, s - 4))
i = i + 1
Loop Until wt = z
If a = 1 Then
.Cells(i, s) = sArr(4)
i = i + 1
End If
a = a + 1
If a = 5 Then a = 0
If a = 1 Then w = i - 1 Else: w = i
Do Until i = w + 7
.Cells(i, s) = sArr(a)
i = i + 1
Loop
If a = 1 Then
.Cells(i, s) = sArr(4)
i = i + 1
End If
a = a + 1
If a = 5 Then a = 0
If a = 1 Then w = i - 1 Else: w = i
Do Until i = w + 7
.Cells(i, s) = sArr(a)
i = i + 1
Loop
If a = 1 Then
Cells(i, s) = sArr(4)
i = i + 1
End If
a = a + 1
If a = 5 Then a = 0
If a = 1 Then w = i - 1 Else: w = i
Do Until i = w + 7
.Cells(i, s) = sArr(a)
i = i + 1
Loop
If a = 1 Then
Cells(i, s) = sArr(4)
i = i + 1
End If
a = a + 1
If a = 5 Then a = 0
If a = 1 Then w = i - 1 Else: w = i
Do Until i = w + 7
.Cells(i, s) = sArr(a)
i = i + 1
If i > 34 Then GoTo weiter
Loop
If a = 1 Then
.Cells(i, s) = sArr(4)
i = i + 1
End If
a = a + 1
If a = 5 Then a = 0
If a = 1 Then w = i - 1 Else: w = i
Do Until i > 35
.Cells(i, s) = sArr(a)
i = i + 1
Loop
weiter:
For i = 32 To 34
If Cells(i, s - 3) = "" Then
Cells(i, s) = ""
End If
Next
End With'
ende:
End Sub

Er ist in dieser Tabelle... https://www.herber.de/bbs/user/26286.xls ... und bewirkt das wenn ich in Zelle E4 die Schicht in z.B. I stelle, der ganze Monat automatisch anpasst.
Jetzt möchte ich diesen Code auch in meinen Stundenzettel einbauen. Nur komme ich mit dem o.g. Code nicht so ganz klar und habe keine Ahnung wie bzw an welchen Stellen ich diesen anpassen muss.
Hier mal der Stundenzettel...

Die Datei https://www.herber.de/bbs/user/26302.xls wurde aus Datenschutzgründen gelöscht

Der Code soll hier in Zelle B5 und B25 horizontal für den Monat funktionieren.
Im Jahreskalender geht er vertikal in Zelle E4 für den Monat.
Kann mir da jemand von Euch beim "Umbau" helfen?!
Gruß
Dietmar

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro übertragen und abändern
05.09.2005 23:12:32
Herbert
hallo Dietmar,
die Wahrscheinlichkeit,daß dir irgend jemand dabei
hilft, war nicht sehr hoch...
weil dein Wunsch den normalen Rahmen einer Forumsfrage eindeutig übersteigt...
gratis und relativ schnell kann das nur der ändern,der den Code schon kennt...
damit es funktioniert mußt du in den Zeilen mit den Wochentagen ein Datum
hinterlegen...das kannst du ja Benutzerdefiniert Formatieren...
und den Code im Tabellenmodul mußt du auch anpassen...
probiers einmal, ob du es zum Laufen bringst...


Option Explicit
Public Sub Schicht_eintr()
Dim sArr, i%, s As Byte, x$, a As Byte, wt As Byte
Dim As Byte, z As Byte
sArr = Array("I""II""Sp""III""D")
Application.ScreenUpdating = False
On Error GoTo ende
With Selection
    x = .Value
    i = .Row
    s = 3
End With
  Select Case x
      Case sArr(0): a = 0
      Case sArr(1): a = 1
      Case sArr(2): a = 2
      Case sArr(3): a = 3
      Case sArr(4): a = 4
   End Select
   
   
With ActiveSheet
  wt = Weekday(.Cells(i - 1, s))
  If Selection.Value = "II" And wt = 2 Then Exit Sub
   If a = 1 And wt = 1 Then
     Cells(i, s) = sArr(4)
     s = s + 1
     a = a + 1
   End If
   
   If wt = 2 Then a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then z = 7 Else: z = 1
   If wt = 1 Then z = 1
   
   Do
        .Cells(i, s) = sArr(a)
          wt = Weekday(.Cells(i - 1, s))
       s = s + 1
   Loop Until wt = z
   
   If a = 1 Then
     .Cells(i, s) = sArr(4)
     s = s + 1
   End If
   a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then w = s - 1 Else: w = s
   
   Do Until s = w + 7
        .Cells(i, s) = sArr(a)
       s = s + 1
   Loop
   
   If a = 1 Then
     .Cells(i, s) = sArr(4)
    s = s + 1
   End If
   a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then w = s - 1 Else: w = s
    
    
   Do Until s = w + 7
        .Cells(i, s) = sArr(a)
       s = s + 1
   Loop
   
   If a = 1 Then
     Cells(i, s) = sArr(4)
     s = s + 1
   End If
   a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then w = s - 1 Else: w = s
   
   Do Until s = w + 7
        .Cells(i, s) = sArr(a)
       s = s + 1
   Loop
  
 If a = 1 Then
     Cells(i, s) = sArr(4)
     s = s + 1
   End If
   a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then w = s - 1 Else: w = s
   Do Until s = w + 7
        .Cells(i, s) = sArr(a)
       s = s + 1
       If s > 32 Then GoTo weiter
   Loop
   
                                    
    If a = 1 Then
     .Cells(i, s) = sArr(4)
     s = s + 1
   End If
   a = a + 1
   If a = 5 Then a = 0
   If a = 1 Then w = s - 1 Else: w = s
   Do Until s > 32
        .Cells(i, s) = sArr(a)
       s = s + 1
   Loop
   
weiter:
  For s = 30 To 32
   If Cells(i, s).Interior.ColorIndex = 1 Then
      Cells(i, s) = ""
    End If
  Next
End With
ende:
Application.ScreenUpdating = True
End Sub

     gruß Herbert
Anzeige
und wieder eine Lösung in Perfektion...
06.09.2005 03:37:43
Dietmar
Hallo Herbert,
ich habe es dank deiner Hilfe hin bekommen.
Nun bin ich wunschlos glücklich ;-)
Vielen herzlichen Dank für deine Mühe!!!
nächtliche Grüße
Diemtar
Anderer Schichtkalender
06.09.2005 16:12:10
Gerhard
Hallo Herbert H.,
ich hab ebenfalls einen Schichtkalender, der Hilfe bräuchte,
nur dieser hat einen 35Tage Rhythmus, für genauere Details BITTE melden bei:
schichtkalender@arcor.de
mfg
Gerhard S.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige