Avatar billede friis5 Novice
21. november 2007 - 15:21 Der er 2 kommentarer og
1 løsning

Dynamisk plot fra excel

Hej Excel Eksperter og Guruer.

Jeg sidder pt. med en større opgave, da jeg godt kunne tænke mig at lave et dynamisk plot.

Med dynamisk plot, mener jeg et plot, hvor brugeren af arket vha. dynamisk genereret knapper kan tilføje og fjerne serier fra plottet.

Det hele skal foregå således - jeg har et stykke vba kode, som udfra antal søjler i et data-ark, genererer et plot med x antal serier = antal søjler i data-arket.

Da et plot med fx. 18 serier på, er helt uoverskueligt at se på, skal det være muligt med knapper på arket at slå disse til og fra enten som flueben eller en "pushdown" knap. (Dette skal helst foregå uden de store loadtider).

Andet problem er at generere knapperne, som skal være i antal de samme som plots og have navne efter serierne (og i sidste ende opstilles pænt under plottet).

1)
Til at starte med - så lad os antage at der er 5 serier, så skal jeg have noget kode, der genererer 5 knapper med seriernes navne!

2)
Derpå noget kode til hver knap der slår serien fra og til i plottet

3) Gøre det hele dynamisk
Avatar billede alen32 Nybegynder
21. november 2007 - 20:37 #1
Du kan hente den her fil som inspiration:
http://www.divshare.com/download/2842039-ccc
Avatar billede friis5 Novice
23. november 2007 - 09:50 #2
Den er fræk, det var præcis sådan noget jeg er ude i :)
Avatar billede friis5 Novice
23. november 2007 - 16:32 #3
Hvis der er nogen der er nysgerrige, så faldt jeg over denne dejlige "checkbox" kode - sådan noget man bare bliver helt varm om hjertet af :)

Sub AddCheckBoxes()
    On Error Resume Next
    Dim c As Range, myRange As Range
    Range("B7:D7").Select
    Set myRange = Selection
    For Each c In myRange.Cells
        ActiveSheet.CheckBoxes.Add(c.Left, c.Top, c.Width, c.Height).Select
            With Selection
                .LinkedCell = c(-3, 1).Address
                .Characters.Text = ""
                .Name = c.Cells(-5, 1).Address
            End With
            c.Cells(-3, 1).Select
            With Selection
                .FormatConditions.Delete
                .FormatConditions.Add Type:=xlExpression, _
                    Formula1:="=" & c.Cells(-3, 1).Address & "=SAND"
                .FormatConditions(1).Font.ColorIndex = 3 'change for other color when ticked
                .FormatConditions(1).Interior.ColorIndex = 4 'change for other color when ticked
                .Font.ColorIndex = 5 'cell background color = White
            End With
        Next
        myRange.Select
End Sub

Sub TurnOnCheckboxesSelection()
    On Error Resume Next
    Dim cb As Shape, Cell As Range
    Range("B7:D7").Select
    For Each cb In ActiveSheet.Shapes
        Set Cell = Intersect(Selection, _
            Range(cb.TopLeftCell.AddressLocal))
        If Not Cell Is Nothing Then _
            cb.ControlFormat.Value = xlOn
        Set Cell = Nothing
    Next
End Sub

Sub TurnOffCheckboxesSelection()
    On Error Resume Next
    Dim cb As Shape, Cell As Range
    Range("B7:D7").Select
    For Each cb In ActiveSheet.Shapes
        Set Cell = Intersect(Selection, _
            Range(cb.TopLeftCell.AddressLocal))
        If Not Cell Is Nothing Then _
            cb.ControlFormat.Value = xlOff
            Set Cell = Nothing
    Next
End Sub

Sub RemoveCheckboxes()
    On Error Resume Next
    ActiveSheet.CheckBoxes.Delete
    Selection.FormatConditions.Delete
End Sub
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