Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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

Format mit VBA übertragen

Format mit VBA übertragen
03.02.2016 10:18:14
Benaldo
Hallo zusammen,
vorneweg: Dies sind meine ersten VBA und Forenversuche, also bei Unvollständigkeit meiner Angaben gerne fragen :)
Ziel: Ich möchte mittels einer Drop-Down-Liste im Sheet "Output" in einem Feld (A2) zwischen "Layout1", "Layout2" ... "LayoutN" auswählen können, wie sich die rechts davon befindliche Zeile (B2:M/N/O/P2) formatiert.
Die Drop-Down-Liste im Sheet "Output" ist eingerichtet. Jetzt müsste mein Makro wissen, dass wenn in A2 "Layout2" steht, es im Sheet "Layout" den Namen "Layout2" sucht (steht hier in B3) und dann einen Bereich dahinter (inklusive der Startzelle; B3:N3) markiert. Anschließend soll es den Pinsel drücken und es auf die Zelle hinter "Layout2" im Sheet "Layout" übertragen (also im Beispiel B2).
Das ganze soll er dann für A3, A4, ... wiederholen, sodass zuerst die Drop-Downs festgelegt werden können und dann über einen Knopf das Makro aktiviert werden kann.
Die folgenden Infos habe ich durch Aufzeichnung von Makros und Recherche zusammengetragen. Leider funktioniert davon auch im Einzeltest irgendwie relativ wenig und leider ist es auch erstmal nur auf die Zelle A2 ausgerichtet.
Sub Makro1()
' Makro1 Makro
' Test für Layout mit VBA
Sheets("Output").Select
If ("A2") = "Layout1" Then
Sheets("Layout").Range("B3:N3").Select
End If
If ("A2") = "Layout2" Then
Sheets("Layout").Range("B5:N5").Select
End If
Selection.Copy
Sheets("Output").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

Vielen Dank im Voraus für eure Hilfe!

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

Betreff
Datum
Anwender
Anzeige
AW: Format mit VBA übertragen
03.02.2016 13:19:06
Michael
Hi Benaldo,
das erreichst Du z.B. so:
Option Explicit
Sub layouts(OZ As Long)  ' OZ wie Output-Zeile
Dim c As Range
Const von = "B"
Const bis = "N"
Set c = Sheets("Layout").Range("A:A").Find(Range("A" & OZ))
If Not c Is Nothing Then
Sheets("Layout").Range(von & c.Row & ":" & bis & c.Row).Copy
ActiveSheet.Range(von & OZ).PasteSpecial Paste:=xlPasteFormats
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 And Target.Value Like "Layout*" Then
layouts (Target.Row)
Cancel = True
End If
End Sub
Der Code kommt zur Tabelle "Output" und wird angeworfen, wenn Du in Spalte A auf eine der Layout-Angaben klickst.
Die Datei enthält ein weiteres Makro-Modul, das Du wie in "Output" erwähnt aufrufen kannst.
Die Datei: https://www.herber.de/bbs/user/103260.xls
Schöne Grüße,
Michael

Anzeige
AW: Format mit VBA übertragen
03.02.2016 16:38:44
Benaldo
Hi Michael,
vielen Dank zunächst für deine Antwort. Ich versuche es jetzt seit gut 5 Stunden, kann es aber leider nicht nachvollziehen, oder für meine Datei anpassen. Immerhin habe ich inzwischen entdeckt, dass sich das Makro irgendwie zweiteilt und das hier im Bild aufgelistete gar nicht alles ist. Ich schätze, das war es, was du mit weiterem Makro Modul. Ich habe mir mal alles ausgedruckt und versucht in eine normale Sprache zu übersetzen, was wo passiert, aber irgendwie scheinen 1,5 Tage VBA Erfahrung überraschenderweise nicht zu reichen.
Mögliche Probleme bei mir könnten sein, dass die Outputtabelle in Spalte B startet und dass die Layouts nicht Layout1 oder Layout2 heißen, sondern z.B. sowas wie "Überschrift Unterstrich (0,0,0)". Ich habe versucht B und N zu C und O umzubauen. Im gleichen Zug habe ich A:A in B:B gewechselt. Außerdem habe ich das "Layout*" mal durch "*" ersetzt...
Ich habe auch mal versucht, mein Layout in deine Datei zu übertragen und auch hier schätze ich, scheitert es am Ende an den Namen der Zeilen, die eben nicht mehr "LayoutN" sind...
Konnte man mit meinem Anfangscode gar nichts anfangen? Ich hatte den zwischenzeitlich sogar noch etwas erweitert, allerdings raucht mir ohnehin jetzt der Kopf ;)
Das blöde ist, früher oder später hilft es mir nicht nur, das umgesetzt zu haben, sondern ich muss es auch verstehen und anderen erklären können.
LG Benaldo

Anzeige
AW: Format mit VBA übertragen
04.02.2016 15:40:01
Michael
Hi Benaldo,
sorry, mein Fehler, ich hatte das mit "Layout in Spalte B" überlesen und suche in Spalte A...
Ich kann den/die Code(s) gerne mal kommentieren, aber sinnvoll wäre es wohl, wenn Du Deine Datei (bitte mit anonymisierten Daten) hochlädst.
Mir ist nämlich etwas unklar, ob Du die Aktion nur eine bestimmte oder für alle Zeilen ausführen willst.
Deshalb habe ich auch zwei Codes geschrieben.
Der zweite...
Option Explicit
Sub mehrLayouts(zvon As Long, zbis As Long, welches As String, blatt As Worksheet)
Dim c As Range
Const von = "B"
Const bis = "N"
' Hier Spalte A mit Layout-Begriffen durch Spalte B ersetzt
'Set c = Sheets("Layout").Range("A:A").Find(welches)
Set c = Sheets("Layout").Range("B:B").Find(welches)
If Not c Is Nothing Then
Sheets("Layout").Range(von & c.Row & ":" & bis & c.Row).Copy
blatt.Range(von & zvon & ":" & bis & zbis).PasteSpecial Paste:=xlPasteFormats
End If
End Sub
Sub ML_aufrufen()
Dim zeilevon As Long, zeilebis As Long
zeilevon = 3
zeilebis = 10
Call mehrLayouts(zeilevon, zeilebis, "Layout1", Sheets("Tabelle3"))
MsgBox "schau mal Tabelle3 an"
End Sub

besteht aus einer Sub, die die eigentliche Arbeit macht und einer weiteren, die sie aufruft.
Schöne Grüße,
Michael
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige