Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bereich automatisch weiter kopieren
#1
Hallo Liebe Leute,

Ich habe vor einen Bereich zu kopieren.
Ich habe ein Makro mit Hand aufgezeichnet.
Kurze Beschreibung der Vorgehensweise:
            Ich markiere einen Bereich
            Fahre mit dem Cursor rechts unten auf das Kästchen
            Ziehe es einmal nach rechts und er kopiert und zählt weiter
Und das Füge ich jetzt in einen Button ein
Wenn ich jetzt erneut drücke dann erscheint ein fehler weil die Zellen daneben natürlich schon voll sind.
Hier der Code:

Range("C2:F31").Select
    Selection.AutoFill Destination:=Range("C2:J31"), Type:=xlFillDefault
    Range("C2:J31").Select
    Range("G2:J31").Select
    Selection.AutoFill Destination:=Range("G2:N31"), Type:=xlFillDefault
    Range("G2:N31").Select

Ich hatte den doppelt durch geführt damit man sieht was ich vor habe.
Ich hätte gerne das er automatisch immer weiter kopiert, beim drücken des Buttons.

Jemand eine Idee?

Habe auch mal die Dateien mit hochgeladen.


.xlsm   Abwesenheitsplaner.xlsm (Größe: 40,34 KB / Downloads: 3)

.xlsx   Datum.xlsx (Größe: 14,39 KB / Downloads: 1)

Vielen dank für die Hilfe
Antwortento top
#2
Hallo,

falls noch jemand weitere Erläuterungen zum Problem sucht, dann sollte auch dieser Thread weiterhelfen:

http://www.ms-office-forum.net/forum/sho...p?t=322736
Gruß
Peter
Antwortento top
#3
Hallo Hajopay,

anbei habe ich mal ein paar codes, die die Fragen hier und im anderen Forum nachgehen. Ich bin jetzt erst mal in die Richtung unterwegs, dass Du ausgehend von ausgefüllten Daten in C:F die Liste einmalig in den rechts daneben liegenden, freien Bereich vervielfältigst. Damit Du siehst, wie ich vorgehe, habe ich die "Entwicklung" in 4 Schritten dargestellt.

Im Step 1 / Makro1 hab ich erst mal den Ausgangscode von Dir reduziert, um die Liste nur zu duplizieren.

Im Step2 ( Makro2 hab ich einen größeren Zielbereich gewählt. Da ich wieder vom ersten Bereich ausgehe, hab ich vorher manuell den mit Makro1 gefüllten Bereich gelöscht. Du siehst, dass man das gleich in einem Schritt tun kann und nicht mehrfach programmieren muss.

Im Step 3 / Makro3 hab ich dann mal eine andere Schreibweise für die Angabe des Zielbereichs genommen. Durch die Verwendung von Cells kann man die Spalten auch mit Zahlen angeben und entsprechend später mal berechnen.

Im Step 4 / Makro4 hab ich für die letzte Spalte keine feste Zahl genommen, sondern eine Variable. Den Wert hab ich hier fest programmiert, im anderen Forum hast Du ja geschrieben, dass Du das letzte Datum aus der anderen Datei holen willst. Hier hast Du das nicht erwähnt - in sofern ist der Hinweis von Peter schon hilfreich. Andererseits schreibst Du hier, dass Du es mit einem Button lösen willst, wo Du wohl jeweils bei 1x Drücken einen neuen Tag möchtest. Dann braucht man aber die Datei mit dem Datum nicht?

Wenn Du Deine Frage auch in einem anderen Forum stellst, dann poste bitte in beiden Foren jeweils die Links zu dem anderen Forum. Dann kann man nachschauen, was dort diskutiert wird und sich den einen oder anderen Ansatz sparen oder auf andere Vorschläge aufbauen.

Später mehr - muss jetzt erst mal Kaffee trinken gehen Wink

Code:
Sub Makro1()
    Range("C2:F31").Select
    Selection.AutoFill Destination:=Range("C2:J31"), Type:=xlFillDefault
End Sub

Sub Makro2()
    Range("C2:F31").Select
    Selection.AutoFill Destination:=Range("C2:Z31"), Type:=xlFillDefault
End Sub

Sub Makro3()
    Range("C2:F31").Select
    Selection.AutoFill Destination:=Range(Cells(2, 3), Cells(31, 26)), Type:=xlFillDefault
End Sub

Sub Makro4()
'Variablendeklarationen
Dim lCol As Long
    'Wert fuer letzte Spalte zuweisen
    lCol = 26
    'Ausgangsbereich auswaehlen
    Range("C2:F31").Select
    'Bereich vervielfaeltigen
    Selection.AutoFill Destination:=Range(Cells(2, 3), Cells(31, lCol)), Type:=xlFillDefault
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#4
Besten dank schon mal schauan für deine Hilfe.

Das mit dem verlinken habe ich jetzt auch verstanden, wollte ja niemanden ärgern 19

Ich habe mir das Makro 4 mal angeschaut und eingebaut.

Jetzt ist es so das er bis Sonntag durch zählt, das ist ja auch prima nur wenn man den Button erneut drückt dann erscheint eine Fehlermeldung.
Darin erhält man die Information das die Bereiche bereits ausgefüllt sind. Ich denke das er genau das selbe nochmal ausfüllen möchte nur
das da ja schon was steht.

Toll wäre jetzt wenn er die nächste Woche komplett darstellen würde bei dem nächsten betätigen des Buttons. Mo - So

Von dem Gedanken mit dem Datum bin ich von weg gegangen denn dann würde er den Plan bis Tag X erstellen und man müsste alles von Hand ändern.
So könnte man einen Montag erstellen und dann sagen bis Sonntag kopieren. Tag für Tag wäre natürlich auch schon super!

Grüße


Link zum anderen Forum:
http://www.ms-office-forum.net/forum/sho...ost1672016 
Antwortento top
#5
Hallöchen,

hier wäre dann das Ausfüllen einer Woche auf Basis der Daten in C..:F.. Wenn Du mit Dienstag anfängst, ist der letzte Tag dann allerdings Montag - es werden immer 7 Tage voll gemacht.

Code:
Sub Makro5()
'Makro zum Ausfuellen von 6 Tagen
'Variablendeklarationen
Dim lCol As Long
    'Wert fuer letzte auszufuellende Spalte anhand letzter belegte Spalte berechnen
    'Spalte = letzte Spalte + 28 (28 fuer 7 Tage * 4)
    'Hinweis: der Montag in C:F wird immer als Basis genommen / zuvor manuell erzeugt
    lCol = Cells(3, Columns.Count).End(xlToLeft).Column + 28
    'beim ersten mal einen Tag weniger ausfuellen - Spalten C bis F sind schon da
    If lCol = 34 Then
      lCol = 30
    Else
      'Ausgangsbereich kopieren
      Range("C2:F31").Copy Destination:=Range(Cells(2, lCol - 27), Cells(31, lCol - 23))
      'Datum einen Tag hochsetzen
      Cells(2, lCol - 27).Value = Cells(2, lCol - 31) + 1
    End If
    'Bereich vervielfaeltigen
    Range(Cells(2, lCol - 27), Cells(31, lCol - 24)).AutoFill _
       Destination:=Range(Cells(2, lCol - 27), Cells(31, lCol)), Type:=xlFillDefault
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#6
Das sieht echt super aus. Danke dafür!!!

Wäre es denn jetzt sehr aufwendig das ganz so umzubauen das er immer nur einen Tag erstellt, also den nächsten?
und dann auch immer den neu erstellten Tag als Kopiervorlage nimmt?
Kurzes Beispiel:

Montag: ich stell alles so ein wie gewünscht und drücke den Button
Dienstag wird erstellt, da sich nichts ändert drücke ich den Button, Mittwoch wird erstellt. Tage sehen gleich aus
Mittwoch: jetzt muss für den rest der Woche etwas geändert werden, ich ändere den Mittwoch, drücke den Button
Donnerstag wird erstellt und sieht aus wie der Mittwoch.

So in etwa?

Ich spinne jetzt mal etwas rum, ob das eine Möglichkeit Wäre.
und zwar könnte er nicht beim betätigen des Buttons in Zeile 2 das erste leere Kästchen rechts vom Datum suchen,
dann einen nach links springen, von da aus den Bereich 3 Spalten nach links und 30 Zeilen nach unten markieren und kopieren
dann wieder die leere Zelle in Zeile 2 suchen und da mit autofill einfügen?

Grüße
Antwortento top
#7
Hallöchen,
Ja, das geht auch. Bin aber im Moment nur am Smartphone und da gibt es kein VBA. Wenn es nur um ei en Tag geht, kann man einiges weglassen und ein paar Zahlen müssen geändert werden.

Im Kommentar steht ja, wie ich zu der 28 komme. Für einen Tag brauchst Du nur 4. Den Teil von IF bis END IF brauchst Du auch nicht mehr. Nach der Zeile, wo mit der 28 bzw. dann der 4 die Spalte berechnet wird, kommt gleich der Code für das Autifill. Dort musst Du die Spaltenzahlen anpassen, also die 24, 31, 27 usw.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#8
Hey,

habs mal geändert doch leider taucht ein Fehler auf in dem Bereich wo ich die zahlen 24, 27, 31 etc geändert habe 


Danke nochmal
Antwortento top
#9
Hallöchen,
Kannst Du bitte den geänderten Code posten, ich schaue dann mal drüber. Bin voraussichtlich erst morgen Abend wieder am Laptop.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#10
Hey,

ich hatte die Änderung jetzt nicht gespeichert weil es nicht funktionierte.
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste