PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExcelVad är fel..?Vad är fel..?
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2023-01-02 12:18
 

Hej! 

Jag försöker få excel att samla data över vem som har gjort en given ändring och sedan föra in detta i ett diagram. 
Jag får inte koden till att göra som jag vill. Koden är tänkt att fungera på hela arbetsboken, i ALLA celler. 
Jag är lost... 
Jag använder följande kod

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim r As Range
    Set r = Target
    If r.Cells.Count > 1 Then Set r = r.Cells(1)
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet2") ' Replace "Sheet2" with the name of the sheet that you want to use
    ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sh.Name
    ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 1).Value = r.Address
    ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 2).Value = Now()
    ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 3).Value = Environ("USERNAME")
 
    ' Create chart
    Dim cht As Chart
    Set cht = ws.Shapes.AddChart.Chart
    cht.SetSourceData Source:=ws.Range("A1:D" & ws.Rows.Count)
    cht.ChartType = xlColumnClustered
End Sub

Vänligen,
Excelishard. 
 


 

Nytt inlägg
 2023-01-02 13:53
 
 Ändrad av Christian  på 2023-01-02 14:56:30

 Hej hej

Koden du försöker använda triggas av en händelse, eg när man manuellt eller maskinellt gör en ändring i en cell. Detta går att stänga av och sätta på med Application.enableevents = false

Application.enableevents = true

Om detta inte görs direkt i kod, så kommer koden att trigga sig själv, tills datorn får slut på minne och excel krashar. Du behöver alltså stänga av händelsehanteringen i början av din kod, samt slå på den igen i slutet av koden. 

Sedan så har du ett ytterliggare problem med din kod, och det är att du infogar ett diagram utan att ta bort det tidigare. Vilket innebär att du så småningom kommer få minnesproblem därför att du stackar ett diagram ovanpå de gamla varje gång någon gör en ändring i en cell. 

Lägg till nedan kod för att ta bort alla andra diagram på sheet2 innan du lägger in ett nytt:

Dim chtObj As ChartObject

    For Each chtObj In ws.ChartObjects

        chtObj.Delete

    Next chtObj

Alternativt så lägger du en tabell från A1 till D2 och lägger manuellt in ett diagram mot tabellen, då fattar diagrammet att det ska uppdatera sin källa automatiskt vartefter din tabell utökas. Det blir också lättare för dig att göra ett begripligt diagram manuellt än att försöka programmera diagramdesignen. Väljer du denna lösning så ska du naturligtvis inte ha kod som genererar/tar bort diagram alls. 

 

Sist men inte minst så måste koden ligga i modulen thisworkbook för att den ska fungera. Men det kanske du hade koll på :)

Mvh

Christian

 

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelVad är fel..?Vad är fel..?

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter