Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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
Inhaltsverzeichnis

Dienstplantool automatisierungen

Dienstplantool automatisierungen
23.06.2018 19:33:21
Tarkan
Hallo, ich habe ein Dienstplantool und versuche seit einigen Tagen ein paar nützliche Makros einzufügen. Für die Expterten unter euch sicher ganz einfache dinge. Zwei meiner wichtigsten Fragen vorerst sind:
1. Ich Kopiere eine Zelle mit einer for-Schleife für den gesamten Monat durch, ich weiss aber nicht wie ich es einrichten kann, dass nur Mo-Fr. ausgefüllt werden. Oder umgekehrt, dass Sa. und so. erkannt und übersprungen wird.
zum Verständnis
spalte A14:A44 stehen die Tage untereinander.
Spalte A6:CZ6 stehen Mitarbeiternamen
Ich habe verschiedene Optionen und brauche diese auch so, z.B. ein Makro kopiert eine Zelle immer für 4 nebeneinanderstehenden Mitarbeiter und das 30 mal ( mit der ersten eingegebenen Zelle sind es dann 31. für ein Monat.
Das bescheidene Makro:
Sub Markt_durchkopieren()
' Markt_durchkopieren Makro
Selection.Copy
Dim i As Long
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 3
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
ActiveCell.Offset(1, -6).Select
ActiveSheet.Paste
For i = 1 To 2
ActiveCell.Offset(1, 2).Select
ActiveSheet.Paste
Next
End Sub

ich weiss leider nicht ob und wie ich die Exceltabelle hier hochladen könnte.
2. Ab Zeile 44 habe ich die Zellen gesperrt um so zu verhindern, dass diese überschrieben werden. Gibt es ein Befehl, das die Schleife stoppt, sobald eine gesperrte Zelle erreicht wird? oder alternativ ein einfach einzufügendes Befehl, dass die Schleife unabhängig vom Anfangspunkt immer fix bei Zeile 44 automatisch stoppt.( Das ist die oben genannte Schleife, die grundsätzlich 30 mal läuft ( for I = 1 to 30 )
vielen Dank
Tarkan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dienstplantool automatisierungen
23.06.2018 19:39:52
Tarkan
ich habe gerade ein Bild mit dem Ausschnitt upzuloaden geschafft, ich weiss nicht ob es in diesem tread auftaucht...
AW: Dienstplantool automatisierungen
23.06.2018 22:32:48
Barbaraa
Hi Tarkan,
die Zelle unter dem letzten Datum muss leer sein.
Mach die Zelle, in der der zu kopierende Text steht, zur aktiven Zelle und starte folgendes Makro:
Sub Dienstplantool()
Dim lZeile      As Long     'Einfügezeile
Dim lSpalte     As Long     'Einfügespalte
Dim sText       As String   'Kopiertext
With ActiveCell
sText = .Text
'Position der ersten Kopierzelle
lZeile = .Row + 1
lSpalte = .Column + 2
End With
With ActiveSheet
Do
If Left(.Cells(lZeile, 1).Text, 1)  "S" Then
'Wenn Wochentag nicht mit S beginnt:
.Cells(lZeile, lSpalte).Value = sText
lSpalte = lSpalte + 2
If lSpalte > ActiveCell.Column + 6 Then lSpalte = ActiveCell.Column
End If
lZeile = lZeile + 1
Loop Until .Cells(lZeile, 1) = ""    'Weiter, bis Datumszelle leer
End With
End Sub
Hilft das?
LGB
Anzeige
AW: Dienstplantool automatisierungen
24.06.2018 01:03:33
Tarkan
Hi barbara,
ich kenne mich mich vba noch nicht so gut aus(bringe mir alles gerade selber bei), ich werde es schnellstmöglich probieren, dann wissen wir ob es hilft :) vielen lieben Dank in jedem Fall für deine Bemühung!
Liebe Grüsse
AW: Dienstplantool automatisierungen
24.06.2018 01:28:33
Barbaraa
Hi Tarkan,
Dein Makro, mit ein paar Veränderungen versehen, tut's auch.
Die Zelle unter dem letzten Datum muss leer sein.
Mach die Zelle, in der der zu kopierende Text steht, zur aktiven Zelle und starte folgendes Makro:
Sub Markt_Neu_durchkopieren()
Dim i As Long
Selection.Copy
Do
For i = 1 To 4
Do Until Left(Cells(ActiveCell.Row, 1).Text, 1)  "S"
' Falls der Wochentag mit S beginnt, geht es in der nächsten Zeile weiter,
ActiveCell.Offset(1, 0).Select
Loop
' Wenn die Datumszelle leer ist, wird abgebrochen:
If Cells(ActiveCell.Row, 1) = "" Then Exit Do
ActiveSheet.Paste
ActiveCell.Offset(1, 2).Select
Next
ActiveCell.Offset(1, -8).Select
Loop
End Sub
Vergleich mit meinem vorigen Makro:
Hier wird mit "select" gearbeitet. Jede Einfüge-Zelle wird erst ausgewählt, und dann wird eingefügt.
Nachteil:
dauert wegen "select" im Ablauf etwas länger, das sind aber bei Deiner Tabellengröße nur ein paar Millisekunden.
In meinem ersten Makro wird die Einfüge-Zelle intern direkt befüllt.
Vorteile:
Nicht nur der Text, sondern auch die Textfarbe wird mitkopiert.
Für Dich als Anfänger leichter nachvollziehbar, weil die einzelnen Schritte Deinem Dir bekannten Makro ähnlich sind.
LGB
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige