Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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?

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 ;)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige