Avatar billede ena Nybegynder
11. januar 2006 - 23:58 Der er 2 kommentarer

Jeg kan ikke få det til at virke.

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.
Avatar billede kabbak Professor
12. januar 2006 - 00:36 #1
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
Avatar billede ena Nybegynder
14. januar 2006 - 01:47 #2
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester