Zellen formatieren ( Zellen verbinden )
Hallo,
ich möchte in einer Tabelle jeweils zwei nebeneinanderliegende Zellen markieren, die Zellen verbinden und den Inhalt zentrieren. z. B. C42:D42, C44:D44, E42:F42 usw. insgesamt sind es 24 Zellen, die so formatiert werden sollen. Mein Programmcode sieht so aus:
'Zellen verbinden und Zentrieren
Range("C42:D42").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Muß ich das für jede Zelle so aufzeichnen oder kann man daß irgendwie zusammenfassen ?
Gruß
Thomas
Antwort schreiben
Antwort 1 von rainberg vom 15.02.2019, 22:25 Options
Hallo Thomas,
wenn Du diese Prozedur mit dem Makrorecorder aufzeichnest, erhältst Du folgenden Code.
Sub Makro2()
Range("C42:D42").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Copy
Range("E42:Z42").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Hierbei werden die Zellen bis Spalte Z verbunden.
Ich frage mich nur, warum Du dazu ein Makro brauchst, das ist doch mit "Formatübertragen" viel einfacher.
Gruß
Rainer
Antwort 2 von coros vom 16.02.2019, 12:09 Options
Hallo,
ich muss Reiner zustimmen, wozu Du das benötigst ist nicht ganz klar, denn iwe von Reiner beschrieben gehts auch anders. Aber das soll uns ja eigentlich egal sein. Allerdings hättest Du mal schreiben sollen, was bei Dir ".usw" bedeutet. Du machst eine Aufzählung C42:D42, C44:D44,E42:F42" und dann usw. Ich gehe mal davon aus, dass in Zeile 42 die nächsten Zellen G42:H42 wären und dass dann vortlaufend 24x? Wenn dem so ist, dann kopiere nachfolgendes Makro in ein StandardModul und starte es über z.B. eine Befehlsschaltfläche.
[b]Option Explicit
Sub Autoverbinden()
Dim i As Integer
For i = 3 To 49 Step 2
With Range(Cells(42, i), Cells(42, i + 1))
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
With Range(Cells(44, i), Cells(44, i + 1))
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Next
End Sub[/b]
Ich hoffe, Du mientest das so. Wenn nicht, melde Dich nochmal.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von manu661 vom 16.02.2019, 16:09 Options
Hallo und vielen Dank an Reiner und Oliver. Ihr habt Recht, meine Angaben waren zu allgemein.
>>ich muss Reiner zustimmen, wozu Du das benötigst ist nicht ganz klar, denn iwe von Reiner beschrieben gehts auch anders.<<
Dieses Formatieren ist Teil eines Makros um eine Tabelle in die endgültige Form zu bringen.
>>Du machst eine Aufzählung C42:D42, C44:D44,E42:F42" und dann usw. Ich gehe mal davon aus, dass in Zeile 42 die nächsten Zellen G42:H42 wären und dass dann vortlaufend 24x? <<
Das ist nicht der Fall, sondern es sollen folgende Zellen verbunden werden:
C42:D42; E42:F42;
C44:D44; E44:F44;
C45:D45; E45:F45;
C48:D48; E48:F48;
C49:D49; E49:F49;
C50:D50; E50:F50.
Freundliche Grüße
Thomas