Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Makros: Ein Teil nur ein Mal ausführen

Betrifft: Makros: Ein Teil nur ein Mal ausführen von: wowa
Geschrieben am: 19.08.2008 11:11:54

Hallo an Alle!

Kann man ein Teil eines Makros nur ein Mal ausführen lassen und den Rest ständig, sodass der "unnötige Abschnitt eines Makros" ab dem 2ten Mal übersprungen wird?

Vielen Dank im Voraus!!!!
Wowa

  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: Tobias
Geschrieben am: 19.08.2008 11:16:17

Hallo Wowa!
Ja kann man. Was meinst Du mit "ständig"? Irgendwann sollte es schon aufhören, oder?

Poste doch einfach mal Dein Makro und füge Kommentare ein welcher Teil einmal und welcher Teil "ständig" wiederholt werden soll.

Schönen Gruß, Tobias
http://www.vba-blog.de/


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: wowa
Geschrieben am: 19.08.2008 11:22:25

Hallo Tobias!

Das ist mein Makro:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Application.ScreenUpdating = False
    ActiveChart.Shapes("Rectangle 2").Select
    Selection.Delete
    ActiveChart.SeriesCollection(3).Select
    ActiveChart.ChartGroups(1).SeriesCollection(3).PlotOrder = 4
    ActiveChart.SeriesCollection(4).DataLabels.Select
    Selection.Font.ColorIndex = 16
    ActiveChart.SeriesCollection(3).Select
    ActiveChart.SeriesCollection(3).ChartType = xlLine
    ActiveChart.SeriesCollection(3).Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    With Selection
        .MarkerBackgroundColorIndex = xlNone
        .MarkerForegroundColorIndex = xlNone
        .MarkerStyle = xlNone
        .Smooth = False
        .MarkerSize = 5
        .Shadow = False
    End With
    ActiveChart.SeriesCollection(3).DataLabels.Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlTop
        .ReadingOrder = xlContext
        .Position = xlLabelPositionAbove
        .Orientation = xlHorizontal
    End With
    ActiveChart.SeriesCollection(4).Select
    ActiveChart.SeriesCollection(4).Points(4).Select
    ActiveChart.SeriesCollection(4).ChartType = xlLine
    ActiveChart.SeriesCollection(4).Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    With Selection
        .MarkerBackgroundColorIndex = xlNone
        .MarkerForegroundColorIndex = xlNone
        .MarkerStyle = xlNone
        .Smooth = False
        .MarkerSize = 5
        .Shadow = False
    End With
    ActiveChart.SeriesCollection(4).DataLabels.Select
    ActiveChart.SeriesCollection(4).Points(1).DataLabel.Select
    Selection.Left = 66
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(2).DataLabel.Select
    Selection.Left = 145
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(3).DataLabel.Select
    Selection.Left = 227
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(4).DataLabel.Select
    Selection.Left = 308
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(5).DataLabel.Select
    Selection.Left = 389
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(6).DataLabel.Select
    Selection.Left = 472
    Selection.Top = 22
    ActiveChart.SeriesCollection(4).Points(7).DataLabel.Select
    Selection.Left = 553
    Selection.Top = 22
    ActiveChart.SeriesCollection(2).DataLabels.Select
    Selection.Font.ColorIndex = 2
    ActiveChart.SeriesCollection(1).DataLabels.Select
    Selection.Font.ColorIndex = 2

End Sub



und zeile 3 und 4 sollen nur ein Mal abgespielt werden. Das ist ein Makro für ein PivotChart und in Zeilen 3-4 wird ein Rechteck der das Diagramm verdeckt gelöscht... Danach ist der Rechteck ja nicht mehr da und es kommt ein Fehler....


Danke!
Gruß, Wowa


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: Tobias
Geschrieben am: 19.08.2008 11:38:26

Hallo Wowa!
Quick and Dirty - Lösung:

On Error Resume next
ActiveChart.Shapes("Rectangle 2").Select
Selection.Delete
on error goto 0

Viel Spaß, Tobias
http://www.vba-blog.de/


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: wowa
Geschrieben am: 19.08.2008 11:45:39

Hallo Tobias,

Danke ertsmal für deine Hilfe, aber ich kriege nen 1004 Fehler in der letzten ActiveChart.-Zeile und wenn ich die 2 letzten Zeilen löschen, rückt der Fehler einfach 2 Zeilen anch oben.....???

Gruß, Wowa


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: Tobias
Geschrieben am: 19.08.2008 11:52:30

Hallo Wowa!
Die ganzen Selects sind natürlich der Wahnsinn. Ein Tipp für die Zukunft: http://www.online-excel.de/excel/singsel_vba.php?f=78

Lösch einfach mal die Zeile
On Error Goto 0
und schau was passiert.

Gruß, Tobias
http://www.vba-blog.de


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: wowa
Geschrieben am: 19.08.2008 11:59:39

Hallo Tobias,

es hat geklappt!!! Vielen Dank für deine Hilfe und deinen Tipp!!!!

Gruß, Wowa


  

Betrifft: AW: fragwürdiger Tipp von: Daniel
Geschrieben am: 19.08.2008 12:07:27

Hi

also einfach mal ein On Error Resume Next pauschal über den Code zu setzen, ist schon etwas fragwürdig.
wenn du schon die Seiten von Online-Excel als Referenz empfiehlst, dann solltest du dir auch das hier mal durchlesen:
http://www.online-excel.de/excel/singsel_vba.php?f=147

Gruß, Daniel


  

Betrifft: AW: fragwürdiger Tipp von: Tobias
Geschrieben am: 19.08.2008 12:16:31

Hallo Daniel!
Das ist richtig. Aber es war die schnellste Lösung. Da die Funktion nur das Diagramm bearbeitet (was wahrscheinlich eh alles unnötig ist) sollten aber keine größeren Probleme entstehen.

Gruß, Tobias
http://www.vba-blog.de


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: Daniel
Geschrieben am: 19.08.2008 11:42:22

Hi

in diesem Fall ist es das einfachste, du teilst Excel mit, daß in diesem Fall bei einem Fehler das Makro nicht gestoppt werden, sondern einfach weiterlaufen soll:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Application.ScreenUpdating = False    
    On Error Resume Next
    ActiveChart.Shapes("Rectangle 2").Select
    Selection.Delete
    On Error Goto 0
    ActiveChart.SeriesCollection(3).Select
    ActiveChart.ChartGroups(1).SeriesCollection(3).PlotOrder = 4
   ...
   ...
End Sub



Bitte für weitere Informationen zum Thema bitte auch mal das hier lesen:

http://www.online-excel.de/excel/singsel_vba.php?f=147

Gruß, Daniel


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: wowa
Geschrieben am: 19.08.2008 11:48:48

Danke Daniel!
Aber wie gesagt, wenn ich das machen, kriege ich einen 1004 Fehler in der letzten ActiveChart-Zeile......
Gruß, Wowa


  

Betrifft: AW: Makros: Ein Teil nur ein Mal ausführen von: Daniel
Geschrieben am: 19.08.2008 11:20:07

Hi

es kommt darauf an, ob du an irgendwass erkennen kannst, ob das Makro schon einmal gelaufen ist oder nicht.
wenn beispielsweise das Makro in die Zelle A1 ein "x" setzen würde, dann könnte man das so machen, Teil 1 würde nur dann ausgeführt werden, wenn in Zelle A1 kein "x" steht.

Sub Test 
If Range("A1") <> "x" then
   ' --- Hier Teil 1 des Makros
end if
'--- Hier Teil 2 des Makro
End Sub



Gruß, Daniel