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

Verbunden -> Zentriert ausrichten

Verbunden -> Zentriert ausrichten
15.04.2014 07:39:20
Thomas
Moin,
ist es eigentlich möglich per VBA verbundene Zellen in 'zentriert über Auswahl ausgerichtet' umzuwandeln?
Das Format VERBUNDEN macht irgendwie zu ärger, oft wenn man Daten reinkopieren will ärger und ich bekomme öfter mal Dateien wo VERBUNDEN genutzt wird.
Manuell ist das ändern etwas aufwändig.
LG,
Tommi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verbunden -> Zentriert ausrichten
15.04.2014 08:31:34
UweD
Hallo
Sub Zentrieren()
With Selection
.MergeCells = False
.HorizontalAlignment = xlCenterAcrossSelection
End With
End Sub
Gruß UweD

AW: Verbunden -> Zentriert ausrichten
15.04.2014 08:33:17
UweD
Ich sollte vorher nochmal aktualisieren...
Mathias war schneller

Verbunden -> Zentriert ausrichten
15.04.2014 09:17:10
Erich
Hi Tommi,
Matthias' Lösung habe ich noch ein wenig ausgebaut. Es werden alle verbundenen Zellen im markierten Bereich
umgewandelt - soweit sie sich nicht über mehrere Zeilen erstrecken.
Was soll bei mehrzeiligen Verbundbereichen geschehen? Hier bleiben sie jetzt unverändert stehen.
Probier mal:

Option Explicit
Sub Verb2Zentr()
Dim rngR As Range, cc As Long, rngM As Range, rngC As Range
' Bereich zeilenweise abarbeiten
For Each rngR In Intersect(ActiveSheet.UsedRange, Selection.Rows)
For cc = 1 To rngR.Cells.Count            ' Spalten der Zeile
If rngR.Cells(cc).MergeCells Then      ' verbunden ?
Set rngM = rngR.Cells(cc).MergeArea ' Mergebereich
If rngM.Rows.Count = 1 Then         ' nur wenn Einzeiler
If rngC Is Nothing Then
Set rngC = rngM               ' Mergebereich einsammeln
Else
Set rngC = Union(rngC, rngM)
End If
cc = cc + rngM.Cells.Count - 2   ' Spaltenzähler nach rechts
End If
End If
Next cc
Next rngR
If Not rngC Is Nothing Then                  ' eingesammelte Bereiche
With rngC                                 '   zusammen bearbeiten
.MergeCells = False
.HorizontalAlignment = xlCenterAcrossSelection
MsgBox .Address(0, 0)                                       ' nur für Test
End With
End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Verbunden -> Zentriert ausrichten
15.04.2014 10:44:07
Thomas
Sorry, das ich erst jetzt antworte, war etwas beschäftigt ;)
Also die letzte Version funktioniert zumindest bestens, wobei ich noch dazugebaut habe, das das fix ein bestimmter Ausschnitt markiert wird - es sind nie mehr als 500 Zeilen und nie mehr als 100 Spalten, da spart man sich das manuelle markieren.
Eleganter würde es vermutlich gehen, wenn man den Bereich direkt mit einbaut, aber die eine .select-Anweisung davor geht schneller, wenn man den Code nicht in Ruhe anschauen und verstehen kann - das mache ich später mal ;)
Das Einzige was mir aufgefallen ist, ich habe testweise Zellen farbig (Hintergrund) markiert, das verschwindet bei deiner Aktion nach der ersten Zelle eines markierten Bereichs - ist aber nicht so wichtig da in den bewussten Dateien eigentlich nie eine Hintergrundfarbe existiert.
Also so klappt es wunderbar - danke an alle die geholfen haben!
LG,
Tommi

Anzeige
Danke für Rückmeldung - ohne Select
15.04.2014 11:34:20
Erich
Hi Tommi,
Select sollte man wenn möglich vermeiden. Flexibler bist du so:

Option Explicit
Sub Verb2Zentr(rngBer As Range)
Dim rngR As Range, cc As Long, rngM As Range, rngC As Range
' Bereich zeilenweise abarbeiten
For Each rngR In Intersect(rngBer, ActiveSheet.UsedRange).Rows
For cc = 1 To rngR.Cells.Count            ' Spalten der Zeile
If rngR.Cells(cc).MergeCells Then      ' verbunden ?
Set rngM = rngR.Cells(cc).MergeArea ' Mergebereich
If rngM.Rows.Count = 1 Then         ' nur wenn Einzeiler
If rngC Is Nothing Then
Set rngC = rngM               ' Mergebereich einsammeln
Else
Set rngC = Union(rngC, rngM)
End If
cc = cc + rngM.Cells.Count - 2   ' Spaltenzähler nach rechts
End If
End If
Next cc
Next rngR
If Not rngC Is Nothing Then                  ' eingesammelte Bereiche
With rngC                                 '   zusammen bearbeiten
.MergeCells = False
.HorizontalAlignment = xlCenterAcrossSelection
'MsgBox .Address(0, 0)                                       ' nur für Test
End With
End If
End Sub
Sub aTest()
Verb2Zentr Selection
Verb2Zentr Range("F10:G11")
Verb2Zentr Columns(3)
End Sub
In aTest siehst du einige Aufrufmöglichkeiten.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige