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 :)
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.
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