Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
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
Zentrieren via VBA
24.06.2021 11:56:17
Helmut
Mahlzeit da draußen, mit Folgenden Code zentriere ich den Text in den Zellen

If Target.Column = 14 Then  'Zeilenumbruch in Spalte N
With Selection
.WrapText = True
End With
End If
With ActiveCell  ' Range("B6:m109") 'ausrichten der Zellen
.HorizontalAlignment = xlCenter
.HorizontalAlignment = xlLeft
End With
Leider ist es so, dass hier mehrere Mitarbeiter zugriff auf diese Datei haben und wenn ich sie zum xsten mal öffne, ist die Zentrierung wieder futsch. Was läuft da falsch? Besten dank im voraus LG Helmut

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zentrieren via VBA
24.06.2021 12:08:03
Daniel
HI
naja, du zentrierst hier mit diesem Code nicht, sondern du richtest nach links aus.
wenn du die selbe Eigenschaft mehrfach setzt, gilt immer die zuletzt gemachte Einstellung und das ist bei dir xlLeft.
schreibst du Code für das Change-Event, so solltest du beachten das hier Selection und ActiveCell in der Regel nicht mit Target identisch sind.
Target ist immer die geänderte Zelle, wenn du die Zelle mit der Cursortaste verlässt oder eingestellt hast, dass nach ENTER automatisch zu einer Nachbarzelle gesprungen werden soll, dann ist eben diese die ActiveCell und die Selection und nicht die Zelle, die du geändert hast.
wenns bei dir funktioniert und bei deinen Kollegen nicht, dann könnte es daran liegen, dass deine Kollegen die Makros nicht aktivieren, wenn sie mit der Datei arbeiten.
Gruß Daniel
Gruß
Anzeige
AW: Zentrieren via VBA
24.06.2021 12:37:50
Helmut
Servus Daniel, dankeschön für deine Antwort, verstehe leider nur BHF! LEVEL: VBA nur mit Recorder.
Alle haben die Makros aktiviert, dass wurde kontrolliert! Hast du denn ein paar Zeilen für mich, die das ins reine bringen? LG Helmut
AW: Zentrieren via VBA
24.06.2021 13:05:33
Daniel
naja, wenn ich dir erst sage:
"gehe in die Mitte vom Zimmer"
und danach
"gehe an die linke Wand"
und du führst alles brav aus, stehst du dann am Ende in der Mitte vom Zimmer oder an der Linken Wand?
Gruß Daniel
AW: Zentrieren via VBA
24.06.2021 13:21:59
Helmut
Dann fehlt mir das Wort und darin! Nur weis ich nicht wie das geht!
AW: Zentrieren via VBA
24.06.2021 13:34:53
Daniel
und brauchst du in VBA auch nicht.
aber wenn man sich diesen Codeteil anschaut, Grundlegenden Englischkenntnisse hat und zumindest Ansatzweise verstanden hat wie Programmierung funktioniert, dann sollte eigentlich klar sein, warum der Code links und nicht in der Mitte steht:

.HorizontalAlignment = xlCenter
.HorizontalAlignment = xlLeft
das ist genau das was ich dir gesagt habe, zuerst der Befehl "geh in de Mitte" und danach der Befehl "geh nach Links"
ist doch logisch, was davon die Folge ist.
Gruß Daniel
Anzeige
AW: Zentrieren via VBA
24.06.2021 13:40:46
Yal
Helmut,
probier es einfach:
erste Alignment auskommentieren (Hochkomma rein), probieren. Schauen was passiert ist.

'.HorizontalAlignment = xlCenter
.HorizontalAlignment = xlLeft
erste de-auskommentieren (Hochkomma raus), zweite auskomentieren (Hochkomma rein), probieren. Schauen was passiert ist. Verstehen.

.HorizontalAlignment = xlCenter
'.HorizontalAlignment = xlLeft
Let's go.
VG
Yal
AW: Zentrieren via VBA
24.06.2021 13:36:50
Zwenn
Hallo Helmut,
Du hast folgende beiden Zeilen in Deinem Code:

.HorizontalAlignment = xlCenter
.HorizontalAlignment = xlLeft
Dabei ist HorizontalAlignment der Befehl zur Ausrichtung. Hinter dem Gleichheitszeichen steht, wie die Ausrichtung sein soll. In der ersten Zeile wird zentriert und anschließend wird sofort eine Ausrichtung nach links vorgenommen. Dadurch wird die Zentrierung direkt wieder überschrieben.
Die Lösung dieses Problems ist also das ersatzlose Löschen der Zeile .HorizontalAlignment = xlLeft
Viele Grüße,
Zwenn
Anzeige
AW: Zentrieren via VBA
24.06.2021 14:17:12
Helmut
Dankeschön für die Zahlreiche HIFE, leider kann ich noch kein Ergebnis Verzeichnen, daher Frage ich anders: Ich möchte die Inhalte der Spalten "C - N" linksbündig und horizontal in der Mitte ausgerichtet haben. Vielleicht klappt es jetzt!? LG Helmut
AW: Zentrieren via VBA
24.06.2021 14:29:41
Daniel
Das geht nicht!!!!!
Entweder links ODER in der mitte, da musst du dich entscheiden.
Beides gleichzeitig ist unmöglich.
Kann es sein, dass du horizontal links und vertikal in der Mitte ausrichten willst?
Das wäre wiederum möglich, weil horizontal und vertikal zwei unterschiedliche Eigenschaften sind.
Horizontal = links - Mitte - rechts
Vertikal = oben - Mitte - unten
Gruß Daniel
Anzeige
AW: Zentrieren via VBA
24.06.2021 14:37:18
Yal
Moin Helmut,
wenn die eine Eigenschaft "HorizontalAlignement" heisst, wie könnte die andere heissen?
VerticalAlignment

Sub test()
With Me.Range("C:N")
.HorizontalAlignment = xlHAlignLeft
.VerticalAlignment = xlVAlignCenter
End With
End Sub
VG
Yal
Funktioniert! brauche jedoch eine Erläuterung!
24.06.2021 15:13:02
Helmut
Servus Yal, DAS WAR DIE LÖSUNG!!!!!!! Vielen dank dafür, könntest du mir eventuell noch die beiden Wörter xlHAlignLeft und xlVAlignCenter genauer Erläutern?
Danke auch an Daniel und Zwenn!
AW: Funktioniert! brauche jedoch eine Erläuterung!
24.06.2021 15:31:12
Rudi
Hallo,
das sind interne Konstanten
xlHAlignLeft = -4131
xlVAlignCenter = -4108
xlLeft und xlCenter würde auch gehen.
Gruß
Rudi
Anzeige
AW: Funktioniert! brauche jedoch eine Erläuterung!
24.06.2021 15:31:42
Daniel
Das sind von System bereit gestellte Konstanten, hinter denen die Zahlen stecken, über die man die entsprechende Eigenschaft einstellt.
Die Einstellung erfolgt nämlich über Zahlen (1 = Links, 2 = Rechts, Zahlen nur beispielhaft)
Da man sich aber schlecht merken kann, ob jetzt 1 für links steht oder nicht doch für rechts, hat MS diese Konstanten eingeführt, die man alternativ verwenden kann, was du ja auch selber gemacht hast.
Über den sprechenden Text sieht man sofort, was man da gemacht hat und muss nicht erst nach schauen, für was 1 denn steht.
Bei den konstanten gibts natürlich viele Überschneidungen, was den dahintrrstehenden Zahlenwert betrifft.
Wenns mehrere Konstanten gibt, ist es egal welche du verwendet, Hauptsache die dahinter stehende Zahl stimmt.
Gruß Daniel
Anzeige
AW: Funktioniert! brauche jedoch eine Erläuterung!
24.06.2021 15:38:53
Yal
Hallo Helmut,
wenn Du den Cursor auf das Wort HorizontalAlignment legst und Strg+F1 drückst, kommst Du auf die Online Hilfe für dieses Wort. Leider in dem Fall ohne Beispiel (meistens mit).
In der Mitte der Seite gibt es eine Hinweis, welche Wert es nehmen kann:
"Der Wert dieser Eigenschaft kann auf eine der XlHAlign-Konstanten festgelegt werden."
und auf XlHAlign-Konstanten kann man klicken. Da kommt man auf
https://docs.microsoft.com/de-de/office/vba/api/excel.xlhalign
Im Hintergrund verwendet VBA (und andere Programmiersprachen) Zahlen, um zustände zu beschreiben. Rot:3, Grün:4. Da es aber leichter ist, sich Rot oder Grün zu merken, anstatt 3 und 4, gibt es solche "benannte Werte". Für fast jeden Eigenschaft gibt es im Hintergrund solche Auflistung ("Enumeration").
also hier: xlHAlignLeft
xl weil es eine Excel-spezifische Wert ist (wd für Word, ac für Access, mso für Office, usw)
H für Horizontal
Align für Alignment ("Ausrichtung")
Left für links
Dass xlHAlignLeft -4131 entspricht, ist uns komplett wurst.
Aber diese Runterbrechen hilft nur zu verstehen worum es geht, und den Code leserlicher zu machen, kann aber keinesfalls verwendet werden, um diese benannten Wert selber zu rekonstruieren. Im manche Fälle kommt doch mit Strg+Leertaste einen Auswahlliste.
Deswegen: Strg+F1
VG
Yal
Anzeige
Dankeschön
24.06.2021 15:57:38
Helmut
Dankeschön nochmals an alle auch für die ausführliche Erklärung, bleibt gesund!!! LG Helmut

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige