Jeg har lidt problemer med at lave nogle udregninger. Jeg skal gennem løbe et regneark, for at 28 felter's værdi ikke overstiger 32, i flere rækker, en af gangen. Hvis værdien overstiger 32 skal feltet farves rødt. (Opgaven er lidt for stor for en nybegynder i VBA)
Før hvert gennemløb af en række, startes der med at farve et felt grøn. Hvis et felt forsager den samlet værdi til at overskride 32, skal dette felt farves rødt også det felt der startes med at blive farvet grønt skal farves rødt (den del af koden er mellem ***).
Jeg bruger følgen variabler: første & sidste = er et tal, som hentes i et felt i regnearket. række = er et tal mellem første og sidste. dato = er et bogstav, så svare til kolonnen ud for dagens dato. felt = er et bogstav mellem dato-28 og dato. a1 & b1 = er et felt i regnearket.
Og til sidst, 1. hvordan aktiver man makroen så den ’ruller’ hele tiden eller 2. aktivers via et tryk på en knap.
Herefter følger makroen, jeg har ikke mere kode.
Sub Udregningen() Dim første As Integer Dim sidste As Integer Dim række As Integer Dim felt As String Dim dato As String For række = første To sidste ActiveSheet.Range(b1.offset(række,0)) Fyldfarve_grøn For felt = dato - 28 To dato If WorksheetFunction.Sum(Range(a1.offset(række, felt), a1.offset(række, felt + 28))) < 32 Then Fyldfarve_hvid Else Fyldfarve_rød *** ActiveSheet.Range(b1.offset(række,0)) Fyldfarve_rød *** Next felt Next række End Sub Sub Fyldfarve_hvid() Selection.Interior.ColorIndex = xlNone End Sub Sub Fyldfarve_grøn() Selection.Interior.ColorIndex = 4 End Sub Sub Fyldfarve_rød() Selection.Interior.ColorIndex = 3 End Sub
Jeg har fået noget hjælp og det hjalp mig et stykke af vejen og det takker jeg for, men ikke helt i mål. På forhånd tak.
jeg kan ikke lige lure koden, men den er rettet for fejl, måske kan du selv resten.
Sub Udregningen() Dim første As Integer Dim sidste As Integer Dim række As Integer 'Dim felt As String (du kan ikke bruge en string til tæller) Dim felt As Integer Dim dato As Long '(du kan ikke bruge en string til tæller) For række = første To sidste ActiveSheet.Range("b1").Offset(række, 0).Select Fyldfarve_grøn For felt = dato - 28 To dato If WorksheetFunction.Sum(Range("a1").Offset(række, felt)) & ":" & Range("a1").Offset(række, felt + 28) < 32 Then Fyldfarve_hvid Else Fyldfarve_rød '*** End If Next felt Next række End Sub
Her har jeg rettet koden til, med den hjælp jeg har fået frem til nu. Jeg håber det er noget mere overskuligt nu. Jeg har en løkke i kolonne retningen, kan man det på det måde ? hvordan ellers ?
Sub Udregningen() Dim række As Integer 'RÆKKE ER ET TAL MELLEM FØRSTE OG SIDSTE, SOM HENTES I ET FELT I REGNEARKET Dim felt As String Dim dato As string 'ER BOGSTAVET PÅ EN KOLONNE For række = ("første") To ("sidste") 'GENNEMLØBER ALLE RÆKKER ActiveSheet.Range("b1").Offset(række, 0).Select Fyldfarve_grøn For felt = dato - 28 To dato ' SKULLE GENNEMLØBE KOLONNERNE HER If WorksheetFunction.Sum(Range("a1").Offset(række, felt)) & ":" & Range("a1").Offset(række, felt + 28) < 32 Then Fyldfarve_hvid Else Fyldfarve_rød ActiveSheet.Range("b1").Offset(række, 0).Select Fyldfarve_rød End If Next felt Next række End Sub Sub Fyldfarve_hvid() Selection.Interior.ColorIndex = xlNone End Sub Sub Fyldfarve_grøn() Selection.Interior.ColorIndex = 4 End Sub Sub Fyldfarve_rød() Selection.Interior.ColorIndex = 3 End Sub
Synes godt om
Ny brugerNybegynder
Din løsning...
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.