Avatar billede UlrikHH Praktikant
11. januar 2022 - 11:42 Der er 21 kommentarer

ColorCount

Hej
Jeg har i en årrække benyttet makroen ColorCount i .xlsm formatet. Men hvordan får jeg en lignende funktion til at fungere i de nye Excel ark?
Avatar billede ebea Ekspert
11. januar 2022 - 13:00 #1
Hvad er det der specifikt ikke fungerer (fejlen) i nye Excel versioner, med VBA funktionen, som gjorde i ældre versioner?
Avatar billede UlrikHH Praktikant
11. januar 2022 - 13:59 #2
Det er ikke muligt at installere makroen, så jeg leder efter et alternativ til ColorCount. En løsning til at optælle baggrundsfarvede celler.
Avatar billede ebea Ekspert
11. januar 2022 - 14:14 #3
#2 - Nu har jeg kun selv, version 2013. Men umiddelbart lyder det mærkeligt, at du ikke skulle kunne bruge BVA løsningen i nye versioner af Excel. Jeg går ud fra, at din funktion med at tælle farver, ligger som et Modul i VBA delen.
Avatar billede ebea Ekspert
11. januar 2022 - 14:24 #4
#2 - Jeg har lige tjekket hos Microsoft, og der er ingen problemer med at bruge funktionen i hverken version 365, eller 2019. Så der må være noget andet, du gør galt.
Avatar billede UlrikHH Praktikant
11. januar 2022 - 14:30 #5
Ja, jeg har netop også bygget arket op i en 2013 version, men jeg kan ikke få det til at virke i ny version af Excel, og ved ikke hvad jeg skal gøre for A, enten få det til at virke eller B, finde en alternativ løsning
Avatar billede UlrikHH Praktikant
11. januar 2022 - 14:44 #6
Ok, det lyder interessant. Måske kan vi finde ud af det? Men så skal jeg ha' en hånd at holde i, for jeg kan ikke huske hvordan jeg fik det til at virke i første omgang;-)
Jo altså, jeg kopierede funktionen ColorCount ind et sted. Men hvor?
Avatar billede ebea Ekspert
11. januar 2022 - 15:27 #7
#6 - Inde i Excels kode vindue, trykker du på "Insert" oppe i menuen, og vælger "Module", hvorefter du indsætter din kode i det nu åbnede vindue.

Så burde du kunne indsætte den funktion i dine celler (ColourCount), som modsvarer det du har i dit nu oprettede modul.
Avatar billede Jan K Ekspert
11. januar 2022 - 22:09 #8
Kører du Excel i en Web version?
Avatar billede UlrikHH Praktikant
12. januar 2022 - 07:45 #9
@Jan Nej, jeg undgår generelt at arbejde i MS' web versioner, men der kan måske ligge nogle begrænsninger i min organisations licens?
Avatar billede UlrikHH Praktikant
12. januar 2022 - 07:47 #10
Jeg kan ikke finde noget kodevindue!
Avatar billede xl-Enthusiast Ekspert
12. januar 2022 - 08:08 #11
Tag en kopi af koden (macroen ColorCount)
Åbn et Excel ark
Tryk på Alt+F11 for at gå til VBA Editor
Tryk på Insert og herefter på Module
Indsæt din kopierede kode i vinduet til højre
Tryk på Alt+F11 for at gå tilbage til Excel
Gem som xslm fil.

Nu skulle du kunne bruge funktionen.
Avatar billede xl-Enthusiast Ekspert
12. januar 2022 - 12:40 #12
xlsm hedder det. Ikke xslm.

Jvf #11 - vil kun virke i den projektmappe der indeholder makroen. Hvis du ønsker funktion (ColorCount) skal kunne anvendes i alle projektmapper er du nødt til enten at gemme koden som  det der hedder Personal Macro workbook eller som en Add-in.
Avatar billede UlrikHH Praktikant
12. januar 2022 - 13:55 #13
Status: Jeg har fået det til at fungere - delvist...

Jeg fulgte instruksen #11, lagde nedenstående kode ind og gemte som .xlsm (tak)

Og det virker! Men kun én gang. Jeg kan altså ikke foretage en ændring og få et nyt resultat når jeg taster F9!


Function CountColor(Cel, ran As range) As Double
    colo = Cel.Interior.ColorIndex
    cou = 0
    For Each c In ran.Cells
        If c.Interior.ColorIndex = colo Then
            cou = cou + 1
        End If
    Next c
    CountColor = cou
End Function
Avatar billede ebea Ekspert
12. januar 2022 - 14:52 #14
#13 - Det kan du ikke, fordi det er en Function. Så hver gang du ændrer i en celle farve, så ændrer det ikke på din summering.
Der er du nødt til at have en Change event, til at lave opdateringen (genberegning).

En mulighed er, at du lægger denne lille kode ind i selve Arkets kodevindue (ikke i Modulet).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub
Avatar billede UlrikHH Praktikant
12. januar 2022 - 15:24 #15
Ok, lyder godt... men hvordan lægger jeg de tre linjer ind i kodevinduet?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub
Avatar billede xl-Enthusiast Ekspert
12. januar 2022 - 15:35 #16
En anden mulighed er at bruge denne kode fra Microsoft. Bemærk at funktionen hedder  CountCcolor

Function CountCcolor(range_data As Range, criteria As Range) As Long
Dim datax As Range
Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
If datax.Interior.ColorIndex = xcolor Then
CountCcolor = CountCcolor + 1
End If
Next datax
End Function
Avatar billede UlrikHH Praktikant
12. januar 2022 - 15:41 #17
#16 Tak. Den tæller - men summerer ikke ændringer
Avatar billede xl-Enthusiast Ekspert
12. januar 2022 - 15:44 #18
Hvad mener du med det?
Avatar billede ebea Ekspert
12. januar 2022 - 15:49 #19
#15 - Som jeg skrev i #14.
Højreklik på dit Ark's faneblad, og vælg "Se programkode" som åbner kodevinduet. Inde i det vindue, Dbl. klikker du på dit Ark (vist i venstre side), og så indsætter du koden i det nu åbne vindue.

PS: Hvordan har du overhovedet haft en fungerende kode kørende, jævnfør dit åbnings spørgsmål ?
Avatar billede UlrikHH Praktikant
12. januar 2022 - 16:08 #20
#18 Jeg kan godt få den til at tælle forskellige farver i en kolonne. En gang. Hvis jeg skifter farver slår det ikke igennem.

MEN #19 - Jeg fik placeret den lille kode korrekt, og kombineret med #16, og det virker alt sammen. Så stor tak til begge to!

Som sagt er det mange år siden jeg byggede det første ark op, og fik også dengang massiv hjælp fra samme site. Siden har jeg glemt alt;-)
Avatar billede xl-Enthusiast Ekspert
12. januar 2022 - 16:15 #21
Det virker uden problemer ved mig, men hovedsagen er selvfølgelig, at du fandt en vej.
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

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





CIO
Sådan tager top-CIO Pernille Geneser livtag med 40 år gamle it-systemer i Stark Group med 10.000 medarbejdere