Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ausrichten in Zelle

Ausrichten in Zelle
23.07.2008 09:00:00
Ralf
Hallo Excel - Experten,
ich möchte gerne von B 12 bis B 1000 die Zellen ausrichten,
je nachdem ob dort ein A ( linksbündig) B (Mitte) oder C (rechtsbündig)
steht. Mit meinen sehr sehr bescheidenen VBA Kenntnissen habe ich
diesen Code entwickelt, könntet Ihr mir helfen, ihn zum Laufen zu bringen ?

Sub Ausrichten()
Dim c As Range
Range("B12:B1000").Select
For Each c In Selection
If c.Value = "A" Then
.HorizontalAlignment = xlLeft
End If
If c.Value = "B" Then
.HorizontalAlignment = xlCenter
End If
If c.Value = "C" Then
.HorizontalAlignment = xlRight
End If
Next c
End Sub


Viele :-) Grüße
Ralf

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausrichten in Zelle
23.07.2008 09:08:00
Sigi
Hi Ralf,
fast perfekt. Es fehlt nur je ein c bei .HorizontalAlignment

Sub Ausrichten()
Dim c As Range
Range("B12:B1000").Select
For Each c In Selection
If c.Value = "A" Then
c.HorizontalAlignment = xlLeft
End If
If c.Value = "B" Then
c.HorizontalAlignment = xlCenter
End If
If c.Value = "C" Then
c.HorizontalAlignment = xlRight
End If
Next c
End Sub


Gruß
Sigi

Anzeige
Danke Sigi !!!
23.07.2008 09:20:47
Ralf
Hallo Sigi,
vielen Dank für Deine schnelle Hilfe !
Jetzt läuft es, super :-)
Viele Grüße
Ralf

AW: Ausrichten in Zelle
23.07.2008 09:14:14
Tino
Hallo,
ich würde dies so machen, ohne Schleife.

Dim c As Range
Set c = Range("B12:B1000")
Application.ReplaceFormat.HorizontalAlignment = xlLeft
c.Replace "A", "A", xlWhole, , True, , , True
Application.ReplaceFormat.HorizontalAlignment = xlCenter
c.Replace "B", "B", xlWhole, , True, , , True
Application.ReplaceFormat.HorizontalAlignment = xlRight
c.Replace "C", "C", xlWhole, , True, , , True
Set c = Nothing


Gruß Tino

www.VBA-Excel.de


Anzeige
Danke Tino !!!
23.07.2008 09:23:02
Ralf
Hallo Tino,
Deine Lösung läuft auch super :-)
Vielen Dank dafür
Viele Grüße
Ralf

AW: Ausrichten in Zelle
23.07.2008 09:20:00
Rudi
Hallo,

Sub tt()
Dim c As Range
For Each c In Range("B12:b1000")
Select Case c.Value
Case "A": c.HorizontalAlignment = xlLeft
Case "B": c.HorizontalAlignment = xlCenter
Case "C": c.HorizontalAlignment = xlRight
End Select
Next
End Sub


Gruß
Rudi

Anzeige
Danke Rudi !!!
23.07.2008 09:24:00
Ralf
Hallo Rudi,
wie nicht anders von Dir zu erwarten, es läuft ganz prima :-)
Viele Grüße
Ralf

AW: Ausrichten in Zelle
23.07.2008 09:21:00
yusuf
Hi,
hier 2 Möglichkeiten.

Sub ausrichten()
Dim c As Range
Range("B12:C1000").Select
For Each c In Selection
If c.Value = "A" Then
c.HorizontalAlignment = xlLeft
End If
If c.Value = "B" Then
c.HorizontalAlignment = xlCenter
End If
If c.Value = "C" Then
c.HorizontalAlignment = xlRight
End If
If c.Value = "a" Then
c.HorizontalAlignment = xlLeft
End If
If c.Value = "b" Then
c.HorizontalAlignment = xlCenter
End If
If c.Value = "c" Then
c.HorizontalAlignment = xlRight
End If
Next c
End Sub



Sub ausrichten2()
Dim i As Integer
For i = 12 To 1000
Select Case Cells(i, 2).Value
Case "A"
Cells(i, 2).HorizontalAlignment = xlLeft
Case "B"
Cells(i, 2).HorizontalAlignment = xlCenter
Case "C"
Cells(i, 2).HorizontalAlignment = xlRight
Case "a"
Cells(i, 2).HorizontalAlignment = xlLeft
Case "b"
Cells(i, 2).HorizontalAlignment = xlCenter
Case "c"
Cells(i, 2).HorizontalAlignment = xlRight
End Select
Next i
End Sub


Gruß
Yusuf

Anzeige
Danke Yusuf !!!
23.07.2008 09:28:00
Ralf
Hallo Yusuf,
das ist natürlich eine sehr sinnvolle Ergänzung, an die
ich auch gerade dachte, mich aber noch nicht heranwagte :-)
Vielen Dank dafür und
viele :-) Grüße
Ralf

AW: Ausrichten in Zelle
23.07.2008 09:25:52
Erich
Hallo Ralf,
da wirst du ja bombardiert mit Lösungen...
Und nun noch eine:

Sub Ausrichten2()
Dim c As Range, rngZ As Range, rngR As Range
Range("B12:B1000").HorizontalAlignment = xlGeneral
For Each c In Range("B12:B1000")
Select Case c.Value
Case "B"
If rngZ Is Nothing Then Set rngZ = c Else Set rngZ = Union(rngZ, c)
Case "C"
If rngR Is Nothing Then Set rngR = c Else Set rngR = Union(rngR, c)
End Select
Next c
If Not rngZ Is Nothing Then rngZ.HorizontalAlignment = xlCenter
If Not rngR Is Nothing Then rngR.HorizontalAlignment = xlRight
End Sub

Bei "A" kann Standard stehen bleiben - der Text ist ohnehin linksbündig.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Danke Erich !!!
23.07.2008 09:52:01
Ralf
Hallo Erich,
vielen Dank, auch für Deine Lösung.
Ja, da hast Du wohl Recht, es sind sehr viele Lösungen und
auch gute Lösungen. Dies ist eben ein SUPERFORUM :-) !!!
Viele :-) Grüße
Ralf
PS: es wäre schön, wenn auf meine andere Frage ( optisches Hervorheben in Pivottab.) auch so viele
Antworten eingängen :-)
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zellen in Excel mit VBA ausrichten


Schritt-für-Schritt-Anleitung

Um die Zellen in Excel mithilfe von VBA auszurichten, befolge diese Schritte:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBA-Projekt (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Füge den folgenden Code in das Modul ein, um die Zellen in dem Bereich B12:B1000 je nach Inhalt auszurichten:

    Sub Ausrichten()
       Dim c As Range
       Range("B12:B1000").Select
       For Each c In Selection
           If c.Value = "A" Then
               c.HorizontalAlignment = xlLeft
           ElseIf c.Value = "B" Then
               c.HorizontalAlignment = xlCenter
           ElseIf c.Value = "C" Then
               c.HorizontalAlignment = xlRight
           End If
       Next c
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Fehler: „Objektvariable oder With-Blockvariable nicht festgelegt“

    • Stelle sicher, dass Du die Zelle korrekt referenzierst (c.HorizontalAlignment anstelle von .HorizontalAlignment).
  • Fehler: Zellen werden nicht ausgerichtet

    • Überprüfe, ob die Werte in den Zellen genau "A", "B" oder "C" sind. Achte auf Groß- und Kleinschreibung.

Alternative Methoden

Es gibt mehrere Möglichkeiten, die Zellen auszurichten, ohne eine Schleife zu verwenden. Hier ist ein Beispiel von Tino:

Sub AusrichtenOhneSchleife()
    Dim c As Range
    Set c = Range("B12:B1000")

    Application.ReplaceFormat.HorizontalAlignment = xlLeft
    c.Replace "A", "A", xlWhole, , True, , , True

    Application.ReplaceFormat.HorizontalAlignment = xlCenter
    c.Replace "B", "B", xlWhole, , True, , , True

    Application.ReplaceFormat.HorizontalAlignment = xlRight
    c.Replace "C", "C", xlWhole, , True, , , True
End Sub

Praktische Beispiele

Hier sind einige weitere Beispiele, wie Du die HorizontalAlignment-Eigenschaften in VBA verwenden kannst:

  1. Mit Select Case:

    Sub AusrichtenMitSelectCase()
       Dim c As Range
       For Each c In Range("B12:B1000")
           Select Case c.Value
               Case "A": c.HorizontalAlignment = xlLeft
               Case "B": c.HorizontalAlignment = xlCenter
               Case "C": c.HorizontalAlignment = xlRight
           End Select
       Next c
    End Sub
  2. Berücksichtigung von Kleinbuchstaben:

    Sub AusrichtenMitKleinbuchstaben()
       Dim c As Range
       For Each c In Range("B12:B1000")
           Select Case LCase(c.Value)
               Case "a": c.HorizontalAlignment = xlLeft
               Case "b": c.HorizontalAlignment = xlCenter
               Case "c": c.HorizontalAlignment = xlRight
           End Select
       Next c
    End Sub

Tipps für Profis

  • Verwende die Konstanten xlCenter, xlLeft und xlRight, um die Lesbarkeit Deines Codes zu erhöhen.
  • Berücksichtige die Verwendung von xlGeneral, wenn Du die Standardausrichtung beibehalten möchtest.
  • Teste Deinen Code in einer Kopie Deiner Datei, um unerwünschte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die vertikale Ausrichtung ändern? Du kannst die vertikale Ausrichtung mit c.VerticalAlignment ändern, zum Beispiel:

c.VerticalAlignment = xlCenter

2. Wie kann ich die Ausrichtung für mehrere Spalten gleichzeitig ändern? Ändere den Bereich in Range("B12:C1000") und passe den Code entsprechend an. Verwende Selection.HorizontalAlignment, um die Ausrichtung für alle Zellen im ausgewählten Bereich zu ändern.

3. Welche Excel-Version wird benötigt? Die beschriebenen VBA-Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige