Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Kopieren von Dienstplänen per VBA

Betrifft: Kopieren von Dienstplänen per VBA von: Günther Nebel
Geschrieben am: 17.09.2004 10:44:23

Guten Tag!
Mit folgender Routine lege ich in einem Workbook automatisch neue
Wochendienstpläne an.
Die Routine prüft dabei, ob ein Datum schon angelegt wurde.
Kopiert werden soll ein Leerplan. In diesem sind Verknüpfungen zu einer
Access-Datenbank mit Abfragen, damit das Personal immer aktuell eingetragen
wird.
Außerdem sind 7 Spalten (=Wochentag) eingerichtet.
InC2 soll durch das untenstehende Makro autom. das angelegte Datum
eingetragen werden.
In C3 soll dann c2+6 das Enddatum erscheinen.
In Zelle d2 steht eine SVERWEIS-Formel, denn zusätzlich zum Datum jeder
Spalte befindet sich darunter eine Schichtfolge ABA, BCB, CDC, DAD, welche
in einer Tabelle auf ein Datum zugreift und so entsprechend sich autom.
einstellen soll.

Was nicht funktioniert:

- Die Formeln in C3 und in den Spalten der Wochentage (Beispiel= c2+1, =c2+2
etc...), sowie die SVERWEISE werden offenbar nicht kopiert, denn im neu
angelegten
Plan erscheint nur das angelegte erzeugte Datum.
- Wird das Datum 8-stellig eingegeben haut es mit der Abfrage natürlich
nicht hin. Es müßte also eine Datumsabfrage geben und das Datum soll dann
10-stellig in C2 eingetragen werden.

Jou, ich weiß mir keinen Rat mehr. HÜLFÄÄÄ

Dank vorab

Private Sub CommandButton1_Click()' neuer Plan soll erzeugt werden
Dim x As Object
Dim mldg$, title$
Dim datum As Date
Dim ergebnis%, stil%
Unload frmPWneuerPlan 'Passwortabfrage mit Userform
If TextBox1 = "plaN" Then
Sheets("Wochenplan_Leer").Activate
ActiveSheet.Unprotect password:="plaN"
frmPWneuerPlan.Hide
'anlegen eines neuen leeren Plans
datum = InputBox("Geben Sie bitte den 1. Tag der anzulegenden Woche
an. Beachten Sie das Format (10-stellig), Beispiel: 05.03.2003")
If datum = ("") Then 'Abfrage, bzw. festlegen eines Datums
Exit Sub
End If
For Each x In ActiveWorkbook.Sheets
If x.Name = datum Then
mldg = "Diese Woche wurde offensichtlich schon erfasst, bitte kontrollieren
Sie über die bereits angelegten Pläne!"
stil = vbCritical + vbOKOnly
title = "A C H T U N G ! ! !"
ergebnis = MsgBox(mldg, stil, title)
Sheets("Wochenplan_Leer").Activate
Exit Sub
End If
Next x

ActiveSheet.Copy after:=Worksheets("Wochenplan_Leer")'eigentliches Kopieren
'Worksheets(Worksheets.Count)
Cells.Copy
Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = xlCopy
ActiveSheet.Name = ActiveSheet.[C2]
ActiveSheet.Name = datum
ActiveSheet.Range("C2") = datum
ActiveSheet.Range("C3").Select
ActiveSheet.Protect password = "plaN"
Sheets("WoDiPlanStart").Activate
ActiveSheet.Range("a1").Select
Application.ScreenUpdating = True

Else
MsgBox ("Falsches Passwort!")
Exit Sub
End If
End Sub

  


Betrifft: AW: Kopieren von Dienstplänen per VBA von: andre
Geschrieben am: 21.09.2004 19:27:45

Hallo Günther,
mit vba gut solltest Du eigentlich sehen, dass Du nach dem Kopieren des Blattes die Cells kopierst und als Werte einfügst. Da sind dann alle Formeln weg ....
Das mit den 8 oder 10 Stellen ist vielleicht so, Du testest nach der Eingabe ja auch nicht, ob es sich um ein Datum handelt ...


  


Betrifft: AW: Kopieren von Dienstplänen per VBA von: Günther Nebel
Geschrieben am: 22.09.2004 14:34:23

Hallo Andre!
Du sagst es..., genau das hab ich alles schon probiert und "VBA gut" ist leider ne Vorbelegung. Würde eher "mäßig" sagen, darum bräuchte ich ja Hilfe der "Guten" ;-)


Dir einen schönen Tag


  


Betrifft: AW: Kopieren von Dienstplänen per VBA von: andre
Geschrieben am: 22.09.2004 16:53:21

Hallo Günther,
es gibt glaube auch mäßig, aber das gilt wohl auch für Excel...
Versuchs mal so. Siehe auch die Kommentare von mir.
Private Sub CommandButton1_Click() ' neuer Plan soll erzeugt werden
Dim x As Object
Dim mldg$, title$
Dim datum As Date
Dim ergebnis%, stil%

'Unload frmPWneuerPlan 'Passwortabfrage mit Userform
Show frmPWneuerPlan 'Passwortabfrage mit Userform

If TextBox1 = "plaN" Then
Sheets("Wochenplan_Leer").Activate
ActiveSheet.Unprotect Password:="plaN"

'frmPWneuerPlan.Hide 'das kommt ins userform - code von ok
'anlegen eines neuen leeren Plans
datum = InputBox("Geben Sie bitte den 1. Tag der anzulegenden Woche an. Beachten Sie das Format (10-stellig), Beispiel: 05.03.2003")
'If datum = ("") Then 'Abfrage, bzw. festlegen eines Datums
'Exit Sub
'End If
If datum = ("") Then Exit Sub

For Each x In ActiveWorkbook.Sheets
If x.Name = datum Then
mldg = "Diese Woche wurde offensichtlich schon erfasst, bitte kontrollieren Sie über die bereits angelegten Pläne!"
stil = vbCritical + vbOKOnly
title = "A C H T U N G ! ! !"
ergebnis = MsgBox(mldg, stil, title)
Sheets("Wochenplan_Leer").Activate
Application.ScreenUpdating = True
Exit Sub
End If
Next x

ActiveSheet.Copy after:=Worksheets("Wochenplan_Leer") 'eigentliches Kopieren
'Worksheets(Worksheets.Count)
'Cells.Copy
'Cells.PasteSpecial xlPasteValues
'Application.CutCopyMode = xlCopy
'ActiveSheet.Name = ActiveSheet.[C2]
ActiveSheet.Name = datum
ActiveSheet.Range("C2") = datum
ActiveSheet.Range("C3").Select
ActiveSheet.Protect Password = "plaN"

Sheets("WoDiPlanStart").Activate '??? sonst war's "Wochenplan_Leer"
ActiveSheet.Range("a1").Select
Application.ScreenUpdating = True

Else
MsgBox ("Falsches Passwort!")
Exit Sub
End If

End Sub



  


Betrifft: AW: Kopieren von Dienstplänen per VBA von: Günther
Geschrieben am: 23.09.2004 17:57:30

Hi Andre,
danke zunächst mal für die Bemühungen. Schön!
Funzt nicht. Klar, der Leerplan wird kopiert, aber leider auch mit den bezügen und die wollte ich nicht kopiert haben, sondern nur das, was in den zellen zum kopierzeitpunkt steht, deshalb pastevalue...
Verstehst was ich meine?
Nachfolgender code macht das, aber wenn die abfrage mit dem bereits angelegten datum ins spiel kommt, ists vorbei.
Noch eine Idee?

HILFEEEEE

Private Sub CommandButton1_Click()
datum = InputBox("Geben Sie das Datum unbedingt im Format DD.MM.JJ ein.
Beispiel: 12.03.04")
Sheets("Wochenplan_Leer").Activate
ActiveSheet.Unprotect password:="plaN"
ActiveSheet.Copy after:=Worksheets("Wochenplan_Leer")
'Worksheets(Worksheets.Count)
Cells.Copy
Cells.PasteSpecial xlPasteValues
'Application.CutCopyMode = xlCopy
Application.ScreenUpdating = True
'ActiveSheet.Name = ActiveSheet.[C2]
ActiveSheet.Name = datum
ActiveSheet.Range("C2") = datum
ActiveSheet.Range("C3").Select
ActiveSheet.Protect password = "plaN"
Sheets("WoDiPlanStart").Activate
ActiveSheet.Range("a5").Select
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Kopieren von Dienstplänen per VBA"