Avatar billede friis5 Novice
14. december 2007 - 11:07 Der er 14 kommentarer og
1 løsning

Dynamisk fjernelse af serienavn på graf

Jeg fik på et tidspunkt dette ark, da jeg bad om en løsning til hvordan man kunne implementere dynamiske grafer med et user interface.

http://home.no/frz/ChartByCheckBox.xls

Det har jeg nu implementeret, og det fungerer faktisk rigtig godt, men desværre skal graferne efter brugeren har valgt serier, kunne udprintes, og det ser ikke specielt smart ud med serienavne på serier der ikke er på graf-området.

Det er nemlig således, at når en serie bliver "klikket" fra, så optræder serie-navnet stadig. Hertil ville jeg juble over en løsning, hvor der ikke skulle køres en makro (ligesom vedhæftede fil) - men det er i min verden desværre nok umuligt.

Er der nogen der har et godt råd (gerne vedhæftet kode eller pseudo-kode) til hvordan man kan gøre dette?

Har hørt at man kan lave noget "on change", men har aldrig prøvet det? Måske det var løsningen?

Al hjælp modtages med kyshånd :)
Avatar billede excelent Ekspert
14. december 2007 - 20:26 #1
Hvís du skjuler den kolonne som indeholder aktuel serie, så fjernes denne fra grafen

Dette kan gøres manuelt eller via kode
Men der er en 3 mulighed nemlig "Data" > "Grupper og Disposition"
prøv leg lidt med den.

Vælger du alligevel en makro, så sig til.
Avatar billede excelent Ekspert
14. december 2007 - 20:29 #2
Og det er naturligvis kolonnerne som kildedata refererer til
i dit eks. E,F og G
Avatar billede friis5 Novice
17. december 2007 - 10:20 #3
Kigger jeg da straks på :)
Avatar billede friis5 Novice
17. december 2007 - 10:21 #4
Super fed finte - når det er implementeret så kommer dine points - hehe. Ej bare smid svar, så flyver point'erne din vej :)
Avatar billede friis5 Novice
17. december 2007 - 10:27 #5
Eller inden du gør det, hvordan ville du kreere en makro, der tjekker for dette - tror lige jeg blev for ivrig :/
Avatar billede excelent Ekspert
17. december 2007 - 15:22 #6
Følgende 3 koder skal ind i hver sit afkrydsnings modul
og så skal du nok lige formatere grafen til at bevare størrelse

Sub Afkrydsningsfelt2_Klik()
If [B3] = True Then Columns(5).EntireColumn.Hidden = False
If [B3] = False Then Columns(5).EntireColumn.Hidden = True
End Sub
Sub Afkrydsningsfelt3_Klik()
If [C3] = True Then Columns(6).EntireColumn.Hidden = False
If [C3] = False Then Columns(6).EntireColumn.Hidden = True
End Sub
Sub Afkrydsningsfelt4_Klik()
If [D3] = True Then Columns(7).EntireColumn.Hidden = False
If [D3] = False Then Columns(7).EntireColumn.Hidden = True
End Sub
Avatar billede excelent Ekspert
17. december 2007 - 15:42 #7
D.v.s indsæt koderne i et alm modul
Højreklik på afkrydsningsfelterne efter tur og vælg "Tildel makro"
Avatar billede friis5 Novice
18. december 2007 - 15:32 #8
Det var slf. en smart måde, at komme omkring problemet på, men sagen er den, at grafen og tjeckboxene bliver dynamisk genereret efter valg af input (fra userform). - så hvis det skal virke, skal det være lidt mere dynamisk end her lagt op til :/
Avatar billede friis5 Novice
18. december 2007 - 15:34 #9
Hvis man nu laver en makro, der overvåger "sand/falsk" cellerne - så kan man vel blot sætte den til at skjule kolonnen, hvis den bliver sat til falsk.

Så mit spørgsmål er måske et helt nyt spørgsmål, hvordan laver man en overvåger makro?
Avatar billede excelent Ekspert
18. december 2007 - 17:37 #10
Kan der genereres flere Checkboxe end de 3 i dit eks-ark ?
Avatar billede friis5 Novice
21. december 2007 - 10:30 #11
I arket kommer der althængig af bruger om til 100 checkboxe (kun en serie - vises som start på graf området - derpå kan de aktuelle grafer klikkes på). Vores tradere synes det er hammer smart, at de lige kan tjekke korrelation på forskellige valuta, blot ved at klikke lidt på nogle checkboxe.

Da arket er lavet 100% dynamisk, laver den antallet af checkboxe i forhold til antallet af serier valgt af bruger. - faktisk blevet ret lækkert. Men de skal kunne bruge print til kunder osv, og så holder det ikke at, den udskriver serienavnene :/
Avatar billede excelent Ekspert
21. december 2007 - 22:51 #12
Avatar billede friis5 Novice
27. december 2007 - 16:54 #13
Nej hvor perfekt - jeg vil lege lidt videre med det i morgen - men indtil videre er du point værdig :)
Avatar billede excelent Ekspert
30. december 2007 - 14:20 #14
ok
Avatar billede friis5 Novice
16. januar 2008 - 15:39 #15
Så fik jeg lige kigget på det igen - dette blev løsningen (pt. tilpasset tilsendt ark) - det endte med at jeg brugte din første løsning (uden egentligt at tænke over det)

Sub AddMakroToAllShapes()
    Dim sShapes As Shape
   
        'Loop through all shapes on Worksheet
        For Each sShapes In Sheets("Chart By Check Box").Shapes
            With sShapes
                If UCase(Left(.Name, 5)) = "CHECK" Then
                    .OnAction = "HideShowColumns"
                End If
            End With
        Next sShapes

End Sub

Sub HideShowColumns()

    i = 1
    Do Until Range("A1").Cells(3, 1 + i) = ""
        If Range("A1").Cells(3, 1 + i) = False Then
            Columns(4 + i).EntireColumn.Hidden = True
        Else: Columns(4 + i).EntireColumn.Hidden = False
        End If
    i = i + 1
    Loop
   
End Sub

Så fik jeg tilført den dynamik jeg søgte :)
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