Avatar billede Morten Nybegynder
11. februar 2003 - 16:02 Der er 9 kommentarer og
1 løsning

Hente værdi fra diagram

Hej

Nogen der ved hvordan man, via VBA kode, henter værdien på en serie i et diagram?
Avatar billede janvogt Praktikant
11. februar 2003 - 16:16 #1
Alle værdier i et Excel-diagram har et bagved-liggende dataområde.
Her kan du f.eks. via et LOPSLAG gå ind og hente de værdier du skal bruge.
Avatar billede janvogt Praktikant
11. februar 2003 - 16:20 #2
Hvis du skal bruge værdien i en celle burde det derfor ikke være nødvendigt med VBA. Skal du derimod bruge værdien i en variabel, som skal tilpasses i noget andet VBA-kode kunne det godt være man med fordel kunne hente værdien via VBA.
Avatar billede bak Forsker
11. februar 2003 - 16:48 #3
Hvad skal du bruge det til?
Jeg kan da godt lave en kode der henter serien, men det bliver nemt lidt langhåret.
Avatar billede Morten Nybegynder
11. februar 2003 - 20:06 #4
Hej Jan...

Jeg skal bruge det til en lillebitte ting, nemlig til at placerer værdietiketterne, altså hvis serieværdien er større end den foregående værdi så skal den placerer etiketten over kurven og hvis værdien er mindre end den foregående så skal den placerer den under kurven - for ikke at "forstyrrer" grafen....

Jeg kan gøre det manuelt - flytte etiketten, men da det er et pivotdiagram så ændres det tilbage hver gang der ændres en eller anden dimension...

Man kan tildele værdier til serierne - så det burde sq da være muligt at hente den, måske man bare kan hente etiketteksten ??? jeg har rodet lidt med det i dag og vil rode videre nu - men hvis du har løsningen ville jeg blive glad...
Avatar billede bak Forsker
11. februar 2003 - 23:02 #5
Prøv at markere dit diagram og kør denne makro, der flytter etiketterne. Bemærk at den kun bruger een serie.


'Denne sub er til manuelt brug
'select diagrammet og kør den
Sub Set_Labels()
  Dim y As Long
  Dim c As Range
  Dim YRange As Range
  Dim MyChart As Chart
  Dim vYRange
  Dim lastc As Variant
  If ActiveChart Is Nothing Then
      MsgBox ("Marker diagramet før makroen køres")
      Exit Sub
  Else
      Set MyChart = ActiveChart  'ChartObjects(1).Chart
  End If
 
  vYRange = Split(MyChart.SeriesCollection(1).Formula, ",")
  Set YRange = Range(vYRange(2))
  y = 0
  Application.ScreenUpdating = False
  For Each c In YRange
      y = y + 1
      With MyChart.SeriesCollection(1).Points(y).DataLabel
        If y > 1 Then
            If c.Value > lastc Then
            .Position = xlLabelPositionAbove
            Else
            .Position = xlLabelPositionBelow
            End If
        End If
      End With
      lastc = c.Value
  Next
  Application.ScreenUpdating = True
End Sub
Avatar billede Morten Nybegynder
12. februar 2003 - 08:24 #6
>Bak...

Du henter i pivottabellen - fint nok - men når jeg nu har subtotaler i tabellen så bliver der for mange Y'er.... eller har jeg misforstået koden?
Jeg får i hvert fald denne fejl:

"Kan ikke angive egenskaben Points for klassen Series"
Avatar billede Morten Nybegynder
12. februar 2003 - 08:25 #7
Men på den anden side - det er heller ikke nødvendigt at have totaler på disse.. men for en anden gang skyld - tror man kan løse det...?
Kan du kort forklare hvad koden helt præcis gør....
Og smid så venligst et svar... så jeg kan belønne dig...!!!
Avatar billede janvogt Praktikant
12. februar 2003 - 08:28 #8
Jeg står af, det begynder at blive for langhåret :-)
Avatar billede Morten Nybegynder
12. februar 2003 - 08:37 #9
>Bak

Koden virker perfekt hvis bare man fjerne sub- og hovedtotaler fra pivottabellen.....
Avatar billede bak Forsker
12. februar 2003 - 08:58 #10
Nu har jeg jo kun testet koden på et alm diagram.

split deler serien op ved ;
YRange skal være 2. led fra serien (værdierne)
for hver celle i værdiserien skal den se efter om værdien er større end den foregående værdi og placerer labelen derefter
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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

IT-JOB

Capgemini Danmark A/S

Java Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporter til lokal IT støtte i Tirstrup

Politiets Efterretningstjeneste

Data engineer til PET