Just nu i M3-nätverket
Gå till innehåll

Ändring av VBA kod till Stapeldiagram i excel


pefra
 Share

Go to solution Solved by pefra,

Rekommendera Poster

 EXCEL
Kan man skriva om VBA så dessa två villkor fungerar i en och samma kod i mitt diagram ?

______________________________________________________________________________

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
____________________________________________________________________

Länk till kommentar
Dela på andra webbplatser

Välkommen till forumet!

 

Delforumet Diskutera Eforum är till för frågor om just själva Eforum medan andra sorters frågor startar man i det forum som tar upp samma sak som ens egen fråga. Jag har nu flyttat din fråga till forumet för Excel och andra kalkylprogram.

 

Cecilia

Moderator

Länk till kommentar
Dela på andra webbplatser

Worksheet_change är en farlig funktion att använda då denna exekverar VARJE gång en ändring sker i bladet. Varje gång. Detta kan ge att arbetsboken går långsamt.

 

Men:

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

    With Me.ChartObjects(1).Chart.SeriesCollection(2).Points(1).Interior
        If Me.Range("W5").Value <= 1000 Then
            .ColorIndex = 4
        ElseIf Me.Range("W5").Value > 1000 Then
            .ColorIndex = 3
      
        End If
    End With
End Sub

Borde fungera om alla referenser är rätt. Första man ska göra i onChange är kontrollera OM funktionen ska köras.

 

Min rekommendation är att hitta annan lösning till detta problem.

Länk till kommentar
Dela på andra webbplatser

Tack fungerar med dessa två värden, men eftersom det är fler värden som skall in och som skall färga delar av staplar så behöver denna kod utökas ytterligare, när jag infogar ett tredje villkor så fungerar det inte, trots att jag skriver W6 + parentes där uppe och skriver W6 på villkor tre samt ändrar SeriesCollection till 3. Om du skulle vilja öka på koden två steg till vore jag tacksam,

samt om det är något annat som måste göras för varje ökning av villkor.

Vad kan denna person ha använt sig av annars i sitt diagram här nedan ? (Du svarade honom 2015)
detta är precis som mitt diagram men med andra villkor.

post-8996-0-08969300-1433938639_thumb.jpg

Tack för ovärderlig hjälp.
Peter"pefra"

Länk till kommentar
Dela på andra webbplatser

Fyra år sedan. Alla kunskap är inte satt som sten.

Att redigera diagram med kod är inte alltid helt enkel heller. mitt tips är att spela in kod när du manuellt gör det du vill koden ska göra och sedan tar ut de aktiva delarna och anpassar dessa till att fungera i din kod.

Om du nu behöver VBA för detta. Diagram brukar sköta sig själva bra när är uppsatta, ska inte behöva formateras om vid varje uppdatering av dem.

I tråden nedan har ingen VBA-kod använts.

 

 

Länk till kommentar
Dela på andra webbplatser

Jag behöver inte formatera om efter varje uppdatering, detta diagram är några år som jag har ändrat lite i nu, så nu önskar jag färg på delar av stapeln, <=1000 grön och >1000 röd.

Jag använder vad som för att få det att fungera men känner inte till något annat sätt, hur HTSE fått in sina villkor på färger utan någon kod på delar av stapeln vore intressant att veta.

Jag vet att excel sköter i stort sett allt med diagram men jag har inte sett någon inställning för olikfärgade staplar (olika färger på samma stapel) här ovan borde det finnas något som 1=blå, 2=brun, 3=grön, 4=violett eller ?

Länk till kommentar
Dela på andra webbplatser

Bifogar här en fil så är det säkert enklare att förstå vad jag menar och varför.
Gick inte att bifoga makroaktiverad excelfil här så det får bli en bild istället.

Min fråga: Varför går det inte att utöka ytterligare, borde ju vara kopiera - klistra in och ändra lite på de nya villkoren.

Skärmklipp.JPG

Länk till kommentar
Dela på andra webbplatser

Förstår inte riktigt vad du menar? Vill du alternera mellan grönt och rött enbart? Inte ha olika färger?

bara att gå igenom hela serien och manuellt sätta färg på dataserierna.

image.png.dddf2641e14e0378a1cd2f72c5e14c07.png

Länk till kommentar
Dela på andra webbplatser

Nog pefra som tryckt fel då det bara är trådskribenten som kan markera den som löst.(som moderator kan vi två dock även göra det)

Länk till kommentar
Dela på andra webbplatser

Ja, miss av mig.

Ja, jag har staplat diagram, när jag skriver in 999 på januari 2019 så  blir den delen av stapeln grön, när jag skriver in 1999 på februari 2019 så blir den delen röd på samma stapel  (stapeln omfattar 2019 Jan-Dec och växlar mellan rött och grönt beroende på värdet, sedan 2020 Jan-Dec etc.etc.

Har excel 2007 , din bild föreställer troligtvis ett nyare excel för jag hittar inget sådant i mitt excel.

Har löst det med den svåra långa programeringsdelen men borde gå att göra på ett enklare sätt tycker jag.

Bifogar bild på hur det ser ut.

Önskar också att makroaktiverade filer kan bifogas här.

 

Skärmklippx.JPG

Länk till kommentar
Dela på andra webbplatser

  • Solution
Postad (redigerade)

Jag har brytpunkt

<=1000  grön

>1000  röd

Nu är det löst med en lång
och en kort programmering.

Redigerad av pefra
Länk till kommentar
Dela på andra webbplatser

Det ser lite annorlunda ut i Excel 2016 men samma funktion ska stå att finna även i äldre versioner. Minns inte riktigt var men färga grafer går, bara högerklicka på grafelementet och välja att formatera detta.

Ingen VBA-kod ska krävas.

Länk till kommentar
Dela på andra webbplatser

Färga grafer är en sak. Men mitt problem var att färga grafen efter villkor (är lika med eller mindre än 1000= GRÖN alt. Större än 1000= RÖD)

Detta tror jag inte går med ditt förslag på färga grafer, men jag kan ha fel, ska kolla upp det vid tillfälle.

Länk till kommentar
Dela på andra webbplatser

Det har du rätt i, att färga efter villkor det kräver VBA

Problemet kan dock vara att Excel kan vilja färga alla serier, staplar lika, men där kanske jag inte vet hela sanningen.

Länk till kommentar
Dela på andra webbplatser

Jag har nu programmerat två lika diagram med två olika sorters koder, den jobbigaste koden är på 192 villkor och omfattar 16 år x 12 månader den andra är en kod i bladet och en kod som en modul.

Fungerar kanon.

  • Gilla 1
Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...