07. april 2010 - 16:23
												Der 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?
					
		
	 
		
								
					
				07. april 2010 - 23:33
				#5
			 				
						
		 
		
			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