Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro rückgängig

Forumthread: Makro rückgängig

Makro rückgängig
30.10.2007 13:23:00
Julia
Hallo
ich habe ein Makro welches mir mein Diagramm beschriftet. Jetzt würd ich gern ein Makro haben welches mir das Makro "Beschriftung" einfach rückgängig macht
Geht das?

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das musst Du selbst programmieren !
30.10.2007 13:42:00
NoNet
Hallo Julia,
Änderungen, die durch ein Makro durchgeführt wurden, können nicht automatisch "rückgängig" gemacht werden ! Diese einzelnen Bearbeitungsschritte "merkt" sich Excel nicht (anders als bei manuellen Änderungen) ! Daher funktioniert auch die Anweisung Application.Undo in diesem Fall nicht !
D.h. das musst Du entsprechend Deines Makros "Beschriftung" selbst programmieren !
Am einfachsten wäre es wohl, das vorhandene Chart VOR der Änderung zu kopieren und ggf. das geänderte Chart NACH der Änderung wieder zu löschen. Die notwendige Codezeile dafür lautet :
Für ein Diagrammobjekt auf einem Tabellenblatt :
ActiveSheet.Shapes("Diagramm 1").Duplicate
ODER : Für ein eigenes Diagrammblatt :
ActiveSheet.Copy after:=Sheets(ActiveSheet.Index)
Gruß, NoNet

Anzeige
AW: Das musst Du selbst programmieren !
30.10.2007 14:03:08
Julia
Hier das Makro welches auch rückgängig gemacht werden sollte:
Option Explicit

Sub WriteLabels()
Dim ws As Worksheet, wsC As Worksheet
Dim cht As Chart, sc As SeriesCollection, pt As Point, ipt As Integer
Dim rng As Range
Set ws = Worksheets("Data")
Set wsC = Worksheets("Chart")
Set cht = wsC.ChartObjects(1).Chart
Set sc = cht.SeriesCollection
Application.ScreenUpdating = False
Set rng = ws.Range("C5:C" & ws.Cells(ws.Rows.Count, 3).End(xlUp).Row)
With sc(1)
For ipt = 1 To .Points.Count
With .Points(ipt)
.HasDataLabel = True
.DataLabel.Text = rng(ipt).Value2 'ws.Cells(ipt + 1, "C")
End With
Next ipt
.DataLabels.Orientation = xlUpward
End With
wsC.Activate
Application.ScreenUpdating = False
End Sub


Anzeige
Nochmal : Es gibt kein "rückgängig"
30.10.2007 14:16:00
NoNet
Hallo Julia,
evtl. hast Du es falsch verstanden : Aber man kann das nicht "rückgängig" machen, ansonsten müsste man sich den "VORHER-Zustand" des Diagramms irgendwie "merken" ! Du kannst allenfalls ein Makro erstellen, das die Beschriftungen grundsätzlich löscht (unabhängig davon, ob das Beschriften des Diagramms die letzte Makro-Aktion war oder nicht). Ist es DAS was Du möchtest ?
Dann sollte folgender Code helfen :

Sub EraseLabels()
Dim wsC As Worksheet
Dim cht As Chart, sc As SeriesCollection, pt As Point, ipt As Integer
Set wsC = Worksheets("Chart")
Set cht = wsC.ChartObjects(1).Chart
Set sc = cht.SeriesCollection
Application.ScreenUpdating = False
With sc(1)
For ipt = 1 To .Points.Count
With .Points(ipt)
.HasDataLabel = FALSE
End With
Next ipt
End With
wsC.Activate
Application.ScreenUpdating = False
End Sub


Habe das Makro mangels Daten und Diagramm jedoch NICHT getestet !
Gruß, NoNet

Anzeige
AW: Nochmal : Es gibt kein "rückgängig"
30.10.2007 14:20:00
Julia
perfekt genau das hab ich gesucht ;)
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige