Avatar billede Wysmark Nybegynder
25. marts 2013 - 15:46 Der er 5 kommentarer

Stop Makro, hvis betingelsen er falsk

Jeg står og skal lave 2 makroer, der henholdsvis tilføjer og fjerner en dataserie i en graf.

Det kan også godt lade sig gøre, men for hver af de 2 makroer får jeg et problem:

Tilføj-Makro: Her er problemet, at jeg kan blive ved at trykke på knappen, hvorefter makroen tilføjer datasereien igen og igen. Den skal selvfølgelig kun kunne gøre det, hvis serien ikke er i grafen.

Fjern-Makro: Her er problemet, at debuggeren går igang, hvis man trykker på fjern-knappen uden at dataserien er i grafen, f.eks. hvis man kommer til at klikke 2 gange.


Koden fremgår her. Jeg håber nogen kan hjælpe

Sub Tilføj()
'
' Tilføj Macro
'

'
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(8).Name = "='Uddata S26'!$A$6"
    ActiveChart.SeriesCollection(8).Values = "='Uddata S26'!$B$6:$Y$6"
    ActiveChart.SeriesCollection(8).ChartType = xlLine
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
End Sub
Sub Fjern()
'
' Fjern Macro
'

'
        ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(8).Delete
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
   
End Sub
Avatar billede kabbak Professor
25. marts 2013 - 17:52 #1
prøv om denne kan finde dataserien, hvis den er der

koden er overhovedet ikke testet.

Public Sub FindSerie()
ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.ChartArea.Select
   
For Each sc In ActiveChart.SeriesCollection.Series
    If sc.Name = "='Uddata S26'!$A$6" Then
    MsgBox "Serien er i collectionen"
    Exit Sub
    End If
    Next
    MsgBox "Serien er IKKE i collectionen"
End Sub
Avatar billede Wysmark Nybegynder
26. marts 2013 - 08:54 #2
Det virker desværre ikke rigtig.

Enten får jeg en umådelig masse "Expected End Sub" fejl eller også bliver det Error 438.

Eller er det mig der gør et eller andet forkert?
Avatar billede kabbak Professor
26. marts 2013 - 17:42 #3
prøv denne

Sub Tilføj()
'
' Tilføj Macro
'

'
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.ChartArea.Select
      On Error Resume Next
    ActiveChart.SeriesCollection(8).Delete
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(8).Name = Sheets("Uddata S26").Range("$A$6")
    ActiveChart.SeriesCollection(8).Values = Sheets("Uddata S26").Range("$B$6:$Y$6")
    ActiveChart.SeriesCollection(8).ChartType = xlLine
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
End Sub

Sub Fjern()
ActiveSheet.ChartObjects("Chart 1").Activate
  On Error Resume Next
    ActiveChart.SeriesCollection(8).Delete
End Sub
Avatar billede Wysmark Nybegynder
27. marts 2013 - 08:25 #4
Ikke bare perfekt, men helt perfekt

Så enkelt kan det altså gøres... og her har jeg siddet med Error fejl fra 1-5000 de sidste par dage....

Mange tak
Avatar billede kabbak Professor
27. marts 2013 - 09:18 #5
tak og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester