Anzeige
Archiv - Navigation
1000to1004
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

Kopiervorlage per Makro einfügen

Kopiervorlage per Makro einfügen
19.08.2008 10:35:00
Marco
Hallo Forum,
ich habe ein kleines Problem und brauche Eure Hilfe!
Es geht um eine Tabelle, wo Veranstaltungen zeitcronologisch erfasst werden. Jeder neu hinzukommende Veranstaltung bekommt 2 Spalten zur Verfügung, welche hinsichtlich Formeln, Formatierungen usw. aus einer Kopiervorlage an die entsprechende Stelle eingefügt wird. In der Kopiervorlage sind viele geschützte Zellen (mit Formeln).
Zusätzlich ist festzuhalten, dass die Tabelle einen aktiven Blattschutz hat (aber alles erlaubt, was möglich ist) und freigegeben ist.
Nun bräuchte ich ein Makro, welches per Tastenkombination (z.B. Strg. Alt Z damit es nicht aus ersehen passiert) ausgeführt wird und folgendermaßen vorgeht:
1. Der Blattschutz müsste aufgehoben werden (ohne Passwort)
Hier habe ich den Befehl ActiveSheet.Protect UserInterfaceOnly:=True gefunden. Wenn vorher der "freigegebene Modus" ausgestellt werden muss (um den Blattschutz zu deaktivieren), machen wir dies vorher manuell. Vielleicht kann man ja eine Meldung ausgeben: "Bitte Freigabemodus ausschalten".
2. Im Bereich C1:D150 bzw. Spalte C und D ist die Kopiervorlage.
3. Diese sollte in den beiden rechten Spalten, neben der aktuellen Zelle (die Stelle wo das Makro per Tastenkombination gestartet wird) eingefügt werden. D.h., wenn ich z.B. in der Zelle K5 bin (oder K1 ... K120) und das Makro ausführe, fügt er zwei leere Spalten rechts ein (L und M) und kopiert die Kopiervorlage C1:D150 in den Bereich L1:M150. Es darf natürlich nichts überschrieben werden :-)
4. Der Blattschutz wird wieder aktiviert.
5. Die Arbeitsmappe wird wieder freigegeben. Kann auch wieder manuell passieren.
Würde mich sehr freuen, wenn mir jemand helfen könnte!
Danke!
Viele Grüße Marco

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 12:13:54
Tino
Hallo,
hier mal ein Beispiel zum testen.

Sub Test()
Dim lngCol As Long
Dim NeuZelle As Range
Dim Vorlage As Range
'Schutz aufheben
ActiveSheet.Unprotect "tino"
'Vorlage
Set Vorlage = Range("C:D")
'Spalte der aktiven Zelle
lngCol = Selection.Column
'Bereich für Neue Spalten
Set NeuZelle = Columns(Range(Columns(lngCol).Address, Columns(lngCol + 1).Address).Address)
'Neue Spalten einfügen
NeuZelle.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'Vorlage in neuen Berich kopieren
Vorlage.Copy Cells(1, ActiveCell.Column)
'Schutz wieder setzen
ActiveSheet.Protect "tino"
End Sub


Die Tastenkombination, kannst du unter Extras- Makros- Makros… - Optionen festlegen.
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 14:25:00
Marco
Hallo Tino,
vielen Dank für das Beispiel. Ich habe es zuerste in einer leeren Tabelle getestet und es hat wunderbar funktioniert. In der richtigen Umgebung passiert aber folgendes:
Es wird vor der jeweiligen aktiven Zelle zwei Spalten eingefügt und diese werden ausgeblendet.
Kann es sein, dass dies an der Kopiervorlage liegt?
Hier liegen zum einen sehr viele bedingte Formatierungen, Gültigkeiten und unterschiedlichste Formatierungen vor. Außerdem wurde "Über Auswahl zentrieren" benutzt, um bestimmte Zellen, als "verbundene Zellen" aussehen zu lassen.
Hast Du vielleicht noch eine Idee?
Vielen Dank!

Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 14:34:00
Tino
Hallo,
ohne Beispiel kann ich da nicht viel machen.
Du könntest höchstens dies mal Testen, aber ich weis nicht wie die Verbundenen Zellen darauf reagieren.

Sub Test()
Dim lngCol As Long
Dim NeuZelle As Range
Dim Vorlage As Range
'Schutz aufheben
ActiveSheet.Unprotect "tino"
'Vorlage
Set Vorlage = Range("C:D")
'Spalte der aktiven Zelle
lngCol = Selection.Column
'Bereich für Neue Spalten
Set NeuZelle = Columns(Range(Columns(lngCol).Address, Columns(lngCol + 1).Address).Address)
'Neue Spalten einfügen
NeuZelle.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'Vorlage in neuen Berich kopieren
Vorlage.Copy Cells(1, ActiveCell.Column).PasteSpecial(xlPasteValues)
'Schutz wieder setzen
ActiveSheet.Protect "tino"
End Sub


Gruß Tino

Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 15:06:16
Marco
Hallo Tino,
das kann ich verstehen.
Ich habe das Problem schon gefunden. Es war die der Bereich. Habe jetzt auf C1:D120 gesetzt und es funktioniert. Lustigerweise fügt er aber die Spalten vor der aktiven Zelle ein. Ist aber nicht weiter schlimm; Falls Du weißt warum, kannst Du es mir aber verraten!
Auf jeden Fall vielen Dank für Deine Hilfe!!!
Gruß Marco

AW: Kopiervorlage per Makro einfügen
19.08.2008 15:29:00
Tino
Hallo,
so könnte es gehen.

Set NeuZelle = _
Columns(Range(Columns(lngCol).Offset(0, 2).Address, Columns(lngCol + 1).Offset(0, 2).Address).Address)


und


Vorlage.Copy Cells(1, ActiveCell.Offset(0, 2).Column).PasteSpecial(xlPasteValues)


Gruß Tino

Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 15:34:06
Rudi
Hallo,
aus der Fragestellung:

hinsichtlich Formeln, Formatierungen usw. aus einer Kopiervorlage 


das klappt aber nicht mit


.PasteSpecial(xlPasteValues)


Gruß
Rudi

AW: Kopiervorlage per Makro einfügen
19.08.2008 15:43:36
Tino
Hallo,
ja genau dann wäre die Vorlage nutzlos.
Deine Lösung ist ja super einfach, daran habe ich nicht gedacht.
Ich glaube ich denke zu viel um die Ecke. ;-)
Gruß Tino

AW: Kopiervorlage per Makro einfügen
19.08.2008 16:04:32
Rudi
Hallo,

ist ja super einfach


das ist die Kunst. ;-)
Gruß
Rudi

Anzeige
AW: Kopiervorlage per Makro einfügen
19.08.2008 17:00:00
Tino
Hallo,
es ist aber auch eine Kunst den langen weg nach Rom
zu finden. ;-)
Gruß Tino

AW: Kopiervorlage per Makro einfügen
19.08.2008 15:30:12
Rudi
Hallo,

Lustigerweise fügt er aber die Spalten vor der aktiven Zelle ein


Das ist doch auch so, wenn du es von Hand machst.


Sub tt()
ActiveSheet.Unprotect
ActiveCell.Offset(0, 1).Resize(, 2).EntireColumn.Insert
Range("C1:D500").Copy Cells(1, ActiveCell.Column + 1)
ActiveSheet.Protect
End Sub


Gruß
Rudi

AW: Kopiervorlage per Makro einfügen
19.08.2008 15:39:45
Marco
Danke für den Hinweis Rudi.
Musste gerade lachen. Klar fügt er es davor ein! Aber ist kein Problem für meien Fall. Das Problem ist für mich gelöst. Vielen Dank an Euch!
Viele Grüße
Marco
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige