Toon posts:

[Excel]Macro aanpassen voor knop?

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008

Verwijderd

Topicstarter
Dit is de make met snelkoppeling ctrl w ( w van weg :p)

code:
1
2
3
4
5
6
7
8
9
10
11
Sub GrefiekWeg()
'
' GrefiekWeg Macro
' De macro is opgenomen op 13-02-2004 door St. Paulus.
'

'
    ActiveChart.ChartArea.Select
    ActiveWindow.Visible = False
    Selection.Delete
End Sub


Duidelijke korte macro .. wat doet ie precies: Selecteert grafiek en verwijdert hem..

Wat is het probleem:

Ik heb een knop aangemaakt waar deeze macro dus aan gekoppelt is ..
Nu laat ik een grafiek komen (door een andere knop met macro) en daarna druk ik op de "WEG GRAFIEK" knop maar dan flipt ie en zegt ie dat macro niet goed is..

code:
1
    ActiveChart.ChartArea.Select


is dan geel gekleurt (daar ligt dus de fout) maar wat is er fout aan?

Edit --

code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub GrafiekWeg()
'
' GrafiekWeg Macro
' De macro is opgenomen op 13-02-2004 door St. Paulus.
'
' Sneltoets: CTRL+w
'
    ActiveSheet.ChartObjects("Grafiek 325").Activate
    ActiveChart.ChartArea.Select
    ActiveWindow.Visible = False
    Selection.Delete
End Sub


Dit heb ik nu nadat ik de macro vanuit de knop opnieuw heb opgenomen maar geeft nog steeds hetzelfde probleem..

[ Voor 24% gewijzigd door Verwijderd op 13-02-2004 12:28 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

en de foutmelding is?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
1004 natuurlijk .. sorry dat ik die er niet bij deed zetten ..

Methode select van klasse charterea is mislukt ..

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Simpel.

Je gaat uit van een ActiveChart, die dus geactiveerd dient te zijn. Wanneer je nu op CTRL-W drukt verwijderd hij deze chart.

Echter bij het drukken op een knop is er geen ActiveChart, waar door hij hem niet kan selecteren.

In je tweede macro zou het al wel kunnen mits de knop op dezelfde sheet staat als de grafiek.

(Vanwege de code Activesheet. Wanneer je grafiek op sheet 2 staat en je knop op 1 zal het niet werken omdat de ActiveSheet na het drukken op de knop sheet 1 is.)

Tot zover de uitleg.

Kan ook wel oplossing aandragen, maar ik denk dat je daar nu zelf wel uitkomt.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


Verwijderd

Topicstarter
jah maar ik druk eerst een knop in zodat er een grafiek komt ..

Die grafiek is NIET geselecteert .. ik begin macro .. selecteer grafiek .. delete ... einde macro..


Macro werkt perfect met ctrl w maar neit op de knop ..

Beide gevallen van de codes wat ik heb laten zien .. en beide zelfde regel fout ..

de grafiek staat dus gewoon op de zelfde pagina ..

ikzelf denk dat het probleem hem in
code:
1
ActiveSheet.ChartObjects("Grafiek 325").Activate
zit .. want waarom is het "grafiek 325" ?

Edit --

Ja hij geeft in de macro voor de knop de grafiek een nummer waardoor ie niet meer gewoon de actieve grafiek selecteert en verwijdert ..

Dit was in mijn eerste code wel het geval maar daar vind ie ook geen grafiek ..
hoe kan ik dit dan oplossen?

[ Voor 40% gewijzigd door Verwijderd op 13-02-2004 13:13 ]


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Ok, dan is dat het dus niet.

Heb je meerdere grafieken op de sheet staan?

"Grafiek 325" is de interne naam van MS Excel aan die grafiek. Maar als die weg is en je maakt een nieuwe klopt die naam niet meer....

[ Voor 48% gewijzigd door Schonhose op 13-02-2004 13:12 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


Verwijderd

Topicstarter
Jah dat zei ik net hierboven ..

Hij maakt steeds nieuwe grafieken en die moetne ook weer weg kunnen met een klik op de knop ..

waarom doet ie dit bij de eerste code wel met ctrl w (maakt niet uit welke grafiek actief is)

en niet bij die 2e/3e?

Edit .. er is steeds maar 1 grafiek .. maar er kunnen er meerdere gemaakt worden


Edit -- ff terzijde maar kunnen macro's ook standaard geactiveerd worden in excel bij het opstarten? (of aleen bij bepaalde werkbladen? )

[ Voor 33% gewijzigd door Verwijderd op 13-02-2004 13:35 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Aha. Bij control-w houdt je grafiek de focus. Bij het knopje op je sheet niet: het knopje krijgt de focus. Oplossing:
a: verplaats knopje naar een aangepaste werkbalk.
b: controleer previous object (al weet ik niet helemaal zeker of excel dat ding ook kent)

Oops, dit is wat schonhose al zei in zijn eerste post. Maar tcoh moet je het daar zoeken: die eerste variant (dus zonder chart.activate moet werken mits je ervoor zorgt dat het starten van de macro niet de grafiek deactiveert.


edit:
@terzijde: lees even invoegtoepassingen in de help, of werkmappen automatisch laden bij opstarten.

[ Voor 44% gewijzigd door Lustucru op 13-02-2004 16:02 . Reden: oops ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Wat je kunt doen is bij het aanmaken van de grafiek de naam (ID) opslaan in een variabele en deze gebruiken om de chart te activeren en dan te verwijderen.

Je kunt macro's laten uitvoeren wanneer een werkblad geopend wordt. Bij het openen van een ADD-in wordt deze code ook uitgevoerd zodat je tijdens het opstarten van Excel al wat kunt laten uitvoeren.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
sorry voor de keiharde kick, maar dit topic is precies wat ik nodig heb, echter het antwoord lukt bij mij nog niet helemaal. Ik heb mn chart een andere naam gegeven, toch loopt mn macro vast bij het volgende stukje (error 1004):

code:
1
2
3
4
5
6
    ActiveChart.Name = "Chart1"
    ActiveChart.HasLegend = True
    ActiveChart.Legend.Select
    Selection.Position = xlBottom
    ActiveWindow.Visible = False
    ActiveSheet.ChartObjects("Chart1").Activate              'en hier weet hij niet wat Chart1 is


Hoe kan ik dit oplossen?

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:59
Je kan je activechart gewoon aan een variabele hangen:
[nepcode]
Dim grafiek as chart
Set grafiek = activechart
grafiek.activate

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
Als ik dat gebruik en ik vervang activechart door grafiek dan geeft hij aan dat hij de variabele niet herkent.

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
Ik heb nu dit in code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Dim grafiek1 As chart
    Set grafiek1 = Charts.Add
    grafiek1.ChartType = xlLineMarkers
    grafiek1.SeriesCollection.NewSeries
    grafiek1.SeriesCollection(1).Values = naarbestand.Worksheets(1).Range(naarbestand.Worksheets(1).Cells(10, 1), naarbestand.Worksheets(1).Cells(150, 1))
    grafiek1.SeriesCollection(1).Name = naarbestand.Worksheets(1).Cells(6, 2) & naarbestand.Worksheets(1).Cells(7, 2)
    'ActiveChart.Location Where:=xlLocationAsObject, Name:="Start"
    With grafiek1
        .HasTitle = True
        .ChartTitle.Characters.Text = naarbestand.Worksheets(1).Cells(7, 2)
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Nr. of Shots"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Releaseforce (N)"
    End With
    ' ActiveChart.Name = "Chart1"
    grafiek1.HasLegend = True
    grafiek1.Legend.Select
    Selection.Position = xlBottom
    ActiveWindow.Visible = False
    ActiveSheet.ChartObjects("grafiek1").Activate


Hij ziet grafiek1 idd gewoon als chart, maar toch werkt het nog steeds niet bij de laatste zin als ik de chartobjects van grafiek1 wil aanpassen :? Het lukt me ook niet als ik er gewoon:
ActiveSheet.ChartObjects(1).Activate van maak, terwijl dit volgens msdn gewoon zou moeten werken.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:59
Waarschijnlijk is het dus niet chartobject 1. Wat je zou kunnen gebruiken is
grafiek.parent.activate
Formeel is je grafiek een onderdeel van je chartobject, dus krijg je van grafiek.parent het chartobject terug.
Je kan ook eens testen wat excel roept bij
msgbox (grafiek.parent.name)

[ Voor 11% gewijzigd door onkl op 20-09-2005 11:08 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

DarkShadow schreef op dinsdag 20 september 2005 @ 10:04:
sorry voor de keiharde kick, maar dit topic is precies wat ik nodig heb, echter het antwoord lukt bij mij nog niet helemaal. Ik heb mn chart een andere naam gegeven, toch loopt mn macro vast bij het volgende stukje (error 1004):
Aangezien het orginele topic in essentie ging over het verschil tussen het starten van een macro met ctrl w of mbv een knopje en ik dat niet terugzie in jouw probleem lijkt het me beter dat je even zelf een nieuw topic aanmaakt met een heldere probleemomschrijving. Sowieso zijn kicks van anderhalf jaar zelden echt nuttig.

Maar dat wist je zelf ook al ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1

Dit topic is gesloten.