07. april 2010 - 16:23Der er
6 kommentarer og 1 løsning
fortsættelse: http://www.eksperten.dk/spm/906426
Hjælp til automatisk ændring af diagram, når nye datafelter bliver opdateret. Jeg har brug for at få opdateret op til flere diagrammer i ét ark, når der tilføjes yderligere oplysninger i arket - til de respektive diagrammer.
jeg har dato som x-akse og pris som y-akse
fx har jeg A4 "Dato";B4 '01-01-2010';C4 '01-02-2010'; mv... A5 "Pris";B5 '800'; C5 '850'; mv...
Hvordan får jeg diagrammet til at automatisk opdatere med viden om denne data?
Rem Version 2 Rem ========= Dim pris As Single, varenr As String, dato As Date Dim statRække As Long, kol As Byte Private Sub Worksheet_Change(ByVal Target As Range) Rem der ændres i arket If Target.Column = 9 And Target.Value <> "" Then 'kolonne "I" (PRIS) pris = Target.Value varenr = Range("D" & Target.Row).Text dato = Format(Now, "dd-mm-yy") statRække = findRækkeNr(varenr, "STAT", "C:C") If statRække > 0 Then opdaterNyPris pris, dato, statRække + 2 '+2 da prislinje er 2 rækker under ID-linje justerDiagram statRække + 2, kol, varenr Else MsgBox ("varenr " & varenr & " kunne ikke findes i STAT") End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 12 Then 'kolonne L (STAT) varenr = Range("D" & Target.Row).Text
statRække = findRækkeNr(varenr, "STAT", "C:C") If statRække > 0 Then aktiverArk "STAT", statRække 'LINK TIL STAT Else MsgBox ("varenr " & varenr & " kunne ikke findes i STAT") End If End If End Sub Private Function findRækkeNr(varenr, arkNavn, område) With ActiveWorkbook.Sheets(arkNavn).Range(område) Set c = .Find(varenr, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then findRækkeNr = c.Row Else findRækkeNr = 0 End If End With End Function Private Sub aktiverArk(arkNavn, rækkeNr) ActiveWorkbook.Sheets(arkNavn).Activate ActiveSheet.Range("C" & CStr(rækkeNr)).Activate End Sub Private Sub opdaterNyPris(pris, dato, rækkeNr) With ActiveWorkbook.Sheets("STAT") For kol = 1 To 240 If .Cells(rækkeNr, kol) = "" Then .Cells(rækkeNr, kol) = dato .Cells(rækkeNr + 1, kol) = pris .Columns.AutoFit Exit For End If Next kol End With End Sub Private Sub justerDiagram(statRække, kolonne, varenr) Dim kildeOmråde As String, sx, dia As ChartObject Rem find hvilket diagram, det drejer sig om With ActiveWorkbook.Sheets("STAT") For ix = 1 To .ChartObjects.Count .ChartObjects(ix).Activate If ActiveChart.ChartTitle.Text = Trim(varenr) Then kildeOmråde = "STAT!$A$" & CStr(statRække) & ":$" & Chr(kolonne + 64) & "$" & CStr(statRække + 1) ActiveChart.SetSourceData Source:=Sheets("STAT").Range(kildeOmråde) End If Next ix End With End Sub
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.