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

Forumthread: Datenbeschriftung mit VBA ausrichten

Datenbeschriftung mit VBA ausrichten
Marek
Hallo zusammen,
ich möchte eine Datenbeschriftung per VBA ausrichten. Egal, welche Position ich im Code angebe: die Beschriftung wird immer rechtsseitig ausgerichtet.
Was ist hier falsch?
Weiterhin habe ich über 50 solcher Diagramme, die ähnlich aussehen. Deshalb ist der Code zum Ausrichten auch immer derselbe. Leider passiert es, dass es beim Ausführen des Makros zu einem Fehler kommt. Das betrifft immer verschiedene Diagramme. Stoppe ich den Debugger, klicke das betreffende Diagramm an und lasse den Code erneut durchlaufen, funktioniert es. So kann ich jedes "fehlerbehaftete" Diagramm abarbeiten. Danach läuft alles fehlerfrei durch. Bis zum nächsten Öffnen der Datei.
Weiß jemand, woran das liegen kann? Merkwürdig ist, dass es nicht immer dieselben Diagramme betrifft und der Code richtig zu sein scheint.
https://www.herber.de/bbs/user/75755.xlsm
Gruß
Marek
Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 14:12:04
Beverly
Hi Marek,
Sub Formatieren()
Dim DataLab As DataLabel
With ActiveSheet.ChartObjects("Diagramm 1").Chart
With .SeriesCollection(4)
.ApplyDataLabels
For Each DataLab In .DataLabels
DataLab.Top = 20
Next DataLab
End With
With .ChartTitle
.Left = 8
.Top = 2
End With
With .Shapes("Textfeld 1")
.Left = 4
.Top = 16
End With
End With
End Sub



Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 14:29:11
Marek
Hallo Karin,
danke erst mal. Leider werden die neuen Daten leicht rechts versetzt angezeigt.
Dein VBA-Code sieht jedoch eleganter aus als meiner; werde ihn so einbauen. :-)
Gruß
Marek
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 14:58:41
Beverly
Hi Marek,
ändere mal diesen Teil, vielleicht hilft das:
      With .SeriesCollection(4)
If .HasDataLabels Then .DataLabels.Delete
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionAbove
For Each DataLab In .DataLabels
DataLab.Top = 20
Next DataLab
End With



Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 15:07:09
Marek
Dann hängt es bei "DataLab.Top = 20". Das war auch die Stelle, wo es bei meinem zweiten Problem gehangen hat. Dieses Mal jedoch keine Chance: es hängt. :-(
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 15:32:49
Beverly
Hi Marek,
kann ich nicht nachvollziehen.
https://www.herber.de/bbs/user/75758.xlsm


Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 15:39:30
Marek
Hallo Karin,
hängt definitiv bei "DataLab.Top = 20". Sollte eigentlich funktionieren. :-(
Userbild
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 16:58:52
Beverly
Hi Marek,
diesen Codeteil habe ich von dir übernommen. In Excel2010 tritt damit kein Fehler auf. Ich kann das aber erst heute Abend oder morgen mit Excel2007 testen. Inzwischen kannst du es ja mal mit dem folgenden Code versuchen:
Sub Formatieren()
Dim intLabel As Integer
With ActiveSheet.ChartObjects(1).Chart
With .SeriesCollection(4)
If .HasDataLabels Then .DataLabels.Delete
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionAbove
For intLabel = 1 To .Points.Count
.Points(intLabel).DataLabel.Top = 20
Next intLabel
End With
With .ChartTitle
.Left = 8
.Top = 2
End With
With .Shapes("Textfeld 1")
.Left = 4
.Top = 16
End With
End With
End Sub



Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 17:21:59
Marek
Hi Karin,
vielen Dank erst mal. Werde mal ein AddOn deinstallieren. Vielleicht liegt es daran. Den Code schaue ich mir morgen mal an.
Gruß
Marek
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 17:34:02
Marek
Nützt leider auch nichts. Schgönnt heuln ... :-(
Userbild
Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 20:42:09
Beverly
Hi Marek,
ich habe es jetzt in Excel2007 getestet - das ist offensichtlich ein Bug in dieser Programmversion, dass das Beschriftungslabel die Eigenschaften Top/Left nicht besitzt. Die einzige Lösung die ich im Augenblich sehe wäre, dass du die Datenreihe 4 der sekundären Achse zuweist, dann werden ihre Werte als Rubrikenbeschriftung auf gleicher Höhe oberhalb des Diagramms angezeigt.


Anzeige
AW: Datenbeschriftung mit VBA ausrichten
20.07.2011 08:19:04
Marek
Hallo Karin,
habe es gestern Abend bei mir zuhause laufen lassen - auf 2010, keine Probleme. Muss also wirklich ein Bug sein, vor allem, weil es immer bei unterschiedlichen Diagrammen (in 2007) hängen bleibt. Der Code ist also korrekt.
Die Alternative mit der Sekundärachse werde ich mir vormerken.
Vielen Dank für deine Hilfe. Zumindest habe ich gesehen, dass es eleganteren Code gibt, als der Makrorekorder ihn anbietet. :-)
Gruß
Marek
Anzeige
AW: Datenbeschriftung mit VBA ausrichten
19.07.2011 15:00:17
Marek
Hallo nochmal,
habe die Zeile "DataLab.Position = xlLabelPositionAbove" vor "DataLab.Top = 20
" eingefügt. Beim ersten Mal sieht alles prima aus; beim zweiten Formatieren steht die Beschriftung wieder rechtsseitig.
Hast du irgendeine Idee?
Gruß
Marek
;
Anzeige
Anzeige

Infobox / Tutorial

Datenbeschriftung in Excel mit VBA ausrichten


Schritt-für-Schritt-Anleitung

Um die Datenbeschriftung in einem Excel-Diagramm mithilfe von VBA auszurichten, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und lade das Diagramm, das du bearbeiten möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge einen neuen Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)".
    • Wähle "Einfügen" > "Modul".
  4. Kopiere und füge den folgenden VBA-Code in das Modul ein:

    Sub Formatieren()
       Dim DataLab As DataLabel
       With ActiveSheet.ChartObjects("Diagramm 1").Chart
           With .SeriesCollection(4)
               If .HasDataLabels Then .DataLabels.Delete
               .ApplyDataLabels
               .DataLabels.Position = xlLabelPositionAbove
               For Each DataLab In .DataLabels
                   DataLab.Top = 20
               Next DataLab
           End With
       End With
    End Sub
  5. Ändere "Diagramm 1" auf den Namen deines Diagramms.

  6. Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst und Formatieren auswählst.


Häufige Fehler und Lösungen

  • Fehler beim Ausführen des Makros: Wenn der Code beim Ausführen auf ein bestimmtes Diagramm hängt, könnte es an einem Bug in der Excel-Version liegen. Teste den Code in einer anderen Excel-Version, z.B. Excel 2010, um zu sehen, ob das Problem weiterhin besteht.

  • Datenbeschriftungen sind rechtsseitig ausgerichtet: Stelle sicher, dass die Zeile .DataLabels.Position = xlLabelPositionAbove vor der Zeile DataLab.Top = 20 steht. Dies kann helfen, die Excel Datenbeschriftung korrekt zu positionieren.


Alternative Methoden

Eine alternative Methode zur Ausrichtung der Datenbeschriftung besteht darin, die Datenreihe 4 einer sekundären Achse zuzuweisen. Dadurch werden die Werte als Rubrikenbeschriftung oberhalb des Diagramms angezeigt. Du kannst dies im Diagrammformatierungsbereich unter "Datenreihe formatieren" einstellen.


Praktische Beispiele

Hier ist ein Beispiel für den Code, der eine Reihe von Diagrammen in einem Arbeitsblatt anpassen kann:

Sub FormatierenAlleDiagramme()
    Dim ChartObj As ChartObject
    Dim DataLab As DataLabel
    For Each ChartObj In ActiveSheet.ChartObjects
        With ChartObj.Chart
            With .SeriesCollection(1)
                If .HasDataLabels Then .DataLabels.Delete
                .ApplyDataLabels
                .DataLabels.Position = xlLabelPositionAbove
                For Each DataLab In .DataLabels
                    DataLab.Top = 20
                Next DataLab
            End With
        End With
    Next ChartObj
End Sub

Dieser Code durchläuft alle Diagramme im aktiven Arbeitsblatt und passt die Datenbeschriftung an.


Tipps für Profis

  • Verwende die With-Anweisung, um den Code lesbarer und übersichtlicher zu gestalten.
  • Speichere deine Excel-Datei regelmäßig, insbesondere vor dem Ausführen von VBA-Makros, um Datenverlust zu vermeiden.
  • Teste deine Makros in einer Kopie deiner Datei, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Warum wird die Datenbeschriftung nicht wie gewünscht ausgerichtet?
Das liegt oft an Bugs in bestimmten Excel-Versionen. Überprüfe, ob die Positionierungseinstellungen korrekt gesetzt sind und teste in einer anderen Version.

2. Wie kann ich die Datenbeschriftung in Excel anpassen, ohne VBA zu verwenden?
Du kannst die Datenbeschriftung direkt im Diagrammformatierungsbereich anpassen, indem du mit der rechten Maustaste auf die Datenreihe klickst und "Datenbeschriftungen hinzufügen" wählst.

3. Gibt es eine Möglichkeit, die Datenbeschriftung für mehrere Diagramme gleichzeitig zu ändern?
Ja, du kannst ein VBA-Skript schreiben, das alle Diagramme in einem Arbeitsblatt durchläuft und die Datenbeschriftung entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige