Avatar billede emil_ger Nybegynder
31. marts 2010 - 19:20 Der er 3 kommentarer og
1 løsning

Interaktiv graf / Excel+VBA

Jeg har et regneark, hvor jeg henter tre kolonner data ind fra et andet ark (Dato [a], Data1 [b], Data2 [c]).
I kolonne [d] til [i] har jeg beregninger på Data 1 og Data 2.

Vha. seks checkbokse skal brugeren kunne tilføje/fjerne dataen i kolonne [d] til [i], i en graf. Grafen dannes først, når brugeren har taget stilling til hvilke data der skal med i grafen.
Endeligt skal brugeren kunne angive slutdato for dataperioden, hvis dette måtte ønskes, dog kun hvis datoen er større end "x". Dette angives også inden grafen konstrueres.

Jeg fremsender gerne arket, hvis det måtte ønskes :)
Avatar billede emil_ger Nybegynder
31. marts 2010 - 19:41 #1
Det bør måske tilføjes, at check-boksenes "SAND/FALSK" er i hhv. G2, G3, G4, I2, I3, I4.
Avatar billede supertekst Ekspert
31. marts 2010 - 22:49 #2
Du skal være velkommen til at sende det - så kan jeg da forsøge - @-adr. under profil.
Avatar billede emil_ger Nybegynder
03. april 2010 - 22:13 #3
Skriv et svar, så jeg kan tildele point :) Tak for hjælpen.
Avatar billede supertekst Ekspert
03. april 2010 - 23:00 #4
Sub cmd_konsgraf_Klik()
Const kol1 = "D"
Const overSkRække = "11"
Dim sidsteRække As Long, kildeOmråde As Variant, diagramTitel As String
Dim periode As String, forkortet As String, p As Byte
Dim chkListe As Variant, ix As Byte, kol As Variant
    chkListe = Array("G2", "I2", "G3", "I3", "G4", "I4")
   
    sidsteRække = ActiveSheet.Range("I5").Value
    kildeOmråde = "A" & overSkRække & ":A" & CStr(sidsteRække) & ","
    diagramTitel = ""
   
    sletBeståendeDiagrammer
   
Rem Traverser chkListe
    For ix = 0 To UBound(chkListe)
        If Range(chkListe(ix)) = True Then
            periode = Range(kol1 & overSkRække).Offset(0, ix)
            p = InStr(periode, " ")
            If p > 0 Then
                forkortet = Left(periode, p + 1)
                forkortet = Replace(forkortet, " ", "")
            Else
                forkortet = periode
            End If
           
            If diagramTitel <> "" Then
                diagramTitel = diagramTitel + ", "
            End If
           
            diagramTitel = diagramTitel & forkortet
            kol = Chr(Asc(kol1) + ix)
            kildeOmråde = kildeOmråde + kol & overSkRække & ":" & kol & CStr(sidsteRække) & ","
        End If
    Next ix
   
    fremstilDiagram diagramTitel, Left(kildeOmråde, Len(kildeOmråde) - 1)  'fjern sidste ,
End Sub
Private Sub sletBeståendeDiagrammer()
    For Each dia In ActiveSheet.ChartObjects
        dia.Delete
    Next dia
End Sub
Private Sub fremstilDiagram(diagramTitel, kildeOmråde)
Dim diaNavn As String
    kopierFraSkabelon
    ActiveSheet.Paste
   
    ActiveSheet.ChartObjects(1).Activate
    ActiveChart.ChartArea.Select

    ActiveChart.SetSourceData Source:=Sheets("Graf").Range(kildeOmråde), PlotBy:=xlColumns
   
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = diagramTitel
    End With
End Sub
Private Sub kopierFraSkabelon()
Dim antalDia As Byte
    antalDia = ActiveWorkbook.Sheets("DiagramSkabelon").ChartObjects.Count
   
    If antalDia > 0 Then
        ActiveWorkbook.Sheets("DiagramSkabelon").ChartObjects(1).Copy
    End If
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
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