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

 
ForumForumDiskussionerDiskussionerExcelExcelBehöver hjälp med StapeldiagramBehöver hjälp med Stapeldiagram
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2019-12-29 13:12
 
 Ändrad av Peter  på 2019-12-30 18:29:32

 Hittade denna VBA här på sidan som passar mig perfekt, nästan, problemet jag fick är att jag inte löser detta.
Denna kod är väl bara för en cell (A1) Hur utökar jag till fler celler till de andra staplarna, typ (A1:L12).
Jag har 12 staplar med 12 värden i varje, samt två färger som varierar beroende på värdet.

Har provat det mesta men får alltid felkod efter varje ändring. 

Private Sub Worksheet_Change(ByVal Target As Range)
    With Blad1.ChartObjects(1).Chart.SeriesCollection(1).Points(1).Interior
        If Range("A1").Value = 10 Then
            .ColorIndex = 10
        ElseIf Range("A1").Value > 10 Then
            .ColorIndex = 3
        Else
            .ColorIndex = 5
        End If
    End With
End Sub

Nytt inlägg
 2020-01-01 09:53
 

Nu har jag fått det att fungera på alla staplar gånger 12., MEN. bara ett inlagt värde i taget.
Går det överhuvudtaget att sammanfoga fler i samma VBA kod. ?
Här nedan ses hur jag vill få till deti samma kod, men får felkod hela tiden när jag försöker.
I mitt fall ligger mina värden på W4:AH15 om det skulle förenkla.

 

 Private Sub Worksheet_Change(ByVal Target As Range)
    With Blad4.ChartObjects(1).Chart.SeriesCollection(1).Points(1).Interior
        If Range("W4").Value <= 1000 Then
            .ColorIndex = 4
        ElseIf Range("W4").Value > 1000 Then
            .ColorIndex = 3
      
        End If
    End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    With Blad4.ChartObjects(1).Chart.SeriesCollection(2).Points(1).Interior
        If Range("W5").Value <= 1000 Then
            .ColorIndex = 4
        ElseIf Range("W5").Value > 1000 Then
            .ColorIndex = 3
      
        End If
    End With
End Sub

Nytt inlägg
 2020-01-02 08:30
 
Hej Peter

Nedan kod uppdaterar samtliga värden i en graf. Den triggas dock inte automatiskt utan du får trycka på en knapp för att göra detta. Du behöver modifiera den lite för att den ska fungera för dig, ta bort Case Else, ändra till 1000 på de övriga två, och ändra Pts(i).Interior.ColorIndex = 10. Sedan behöver du även uppdatera Sheet(1) till Sheet(4)

Mvh
Christian

Option Explicit

Sub aChartFix()

Dim Pts As Points

Dim sc As SeriesCollection: Set sc = Sheets(1).ChartObjects(1).Chart.SeriesCollection
Dim i As Integer, k As Integer
Dim vnt As Variant

For k = 1 To sc.Count
Set Pts = Sheets(1).ChartObjects(1).Chart.SeriesCollection(k).Points
vnt = sc(k).Values
For i = 1 To Pts.Count
Select Case vnt(i)
Case Is < 10
Pts(i).Interior.ColorIndex = 10
Case Is > 20
Pts(i).Interior.ColorIndex = 3
Case Else
Pts(i).Interior.ColorIndex = 6
End Select
Next i
Next k


End Sub
Nytt inlägg
 2020-01-02 09:58
 

 Tack Christian.
Löste precis nyligen Andreas förslag som går på automatik, jobbet är bara att jag har 144 punkter/villkor jag måste skriva in.

Skall lägga in och köra ditt förslag samtidigt som Andreas kod.
 

/Peter

Nytt inlägg
 2020-01-02 12:32
 
 Ändrad av Christian  på 2020-01-02 13:42:28
Hej peter

Koden som jag gav dig itererar igenom alla värden som din graf bygger på, därefter ändrar den färg om så behövs. Att automatisera detta går juh självklart, men bör i så fall anpassas till din arbetsmetod (för mig okänd).

I andreas metod så är det översta raden: Private Sub Worksheet_Change(ByVal Target As Range) som gör att makrot triggas så fort det görs en ändring i en cell på det bladet macrot ligger. Detta innebär att om du tänker ändra en cell i taget, så är det en bra metod. Om du istället vill klistra in många celler i ett svep, så kommer det att triggas väldigt många gånger och antagligen leda till fel, i så fall är det bättre att köra det macrot via en knapp, så att det endast behöver köras en gång och inte 144 ggr. Nedan finns en automatiserad metod som kallar på mitt tidigare macro, detta ska ligga på det blad där du har dina underliggande värden till grafen. Den andra koden bör ligga i en modul, alltså inte på ett blad. Rangen som sätts till w2:ad20 får du ändra så att den stämmer med dina värden. Använd endast den metoden om du ändrar en cell i taget.. Annars rekommenderar jag en knapp till det andra makrot som då kommer att uppdatera allt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng as range: set rng = activesheet.range("w2:ad20")
Dim isValidRng as range
'Kolla att den ändrade cellen var i området där värden ligger.
Set isValidRng = intersect(rng, target)
'Kör grafmakro om celländringen var på rätt plats
If not isValidRng is nothing then
Call achartfix
End if
End sub

Nytt inlägg
 2020-01-02 16:07
 

 Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range: Set rng = ActiveSheet.Range("W4:AH19")
Dim isValidRng As Range
'Kolla att den ?ndrade cellen var i omr?det d?r v?rden ligger.
Set isValidRng = Intersect(rng, Target)
'K?r grafmakro om cell?ndringen var p? r?tt plats
If Not isValidRng Is Nothing Then
Call achartfix
End If

End Sub
 
Kompileringsfel:
Sub eller Function har inte definierats  (Call achartfix är blåmarkerad)
 
Skulle denna kod ligga modul eller i bladet ?
Nu ligger den i bladet.
 
 
Nytt inlägg
 2020-01-02 16:31
 
Koden du klistrade in ska ligga på bladet. Call achartfix är anropet till koden med det namnet som jag skrev i några inlägg längre upp. Koden i inlägget ska ligga i en modul.
Nytt inlägg
 2020-01-02 16:43
 

 Ber om ursäkt, läste dåligt eller fattade noll.

Missade den som skulle in som modul,
nu fungerar det kanon med så lite kod mot det andra.
Skall använda detta nu.

Jag ändrar diagrammet 1 gång per månad så för den delen hade det inte spelat någon roll.
så minst/kortast kod avgör.

Stort TACK för all hjälp.

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelBehöver hjälp med StapeldiagramBehöver hjälp med Stapeldiagram

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