Avatar billede Hemi_DK Novice
27. juli 2016 - 14:18 Der er 7 kommentarer og
1 løsning

VBA fejler efter saving + autorefresh til VBA kode (SumByColor)

Hej,

Jeg har indsat en marko, i mit excel ark der sammenlægger antallet af farvede celler (=sumbycolor). Efter jeg har gemt filen som "Excel Macro-Enable Workbook" virker VBA makroen ikke længer, og der står #Name i de pågældende celler?

Derudover har jeg behov for, at cellerne hvor makroen/ =sumbycolor henviser til, opdateres automatisk når en celle ændre farvekode - Hvad skal tilføjes nedenstående makro, for at dette kan lade sig gøre?

Jeg anvender Office365 på engelsk

Makro kode;
Function SumByColor(CellColor As Range, SumRange As Range)
Application.Volatile
Dim ICol As Integer
Dim TCell As Range
ICol = CellColor.Interior.ColorIndex
For Each TCell In SumRange
If ICol = TCell.Interior.ColorIndex Then
SumByColor = SumByColor + TCell.Value
End If
Next TCell
End Function
Avatar billede supertekst Ekspert
27. juli 2016 - 14:46 #1
Er er mulighed for at vise den kode, der kalder ovennævnte funktion.

Har prøvet at isolere din kode til en Sub og her optælles der godt nok:
Sub Test()
Application.Volatile
Dim ICol As Integer, sum As Integer
Dim TCell As Range
    ICol = 3    'Rød  'CellColor.Interior.ColorIndex
    For Each TCell In ActiveSheet.Range("B1:B4")    'SumRange
        If ICol = TCell.Interior.ColorIndex Then
        SumByColor = SumByColor + TCell.Value
        End If
    Next TCell
End Sub
Avatar billede store-morten Ekspert
27. juli 2016 - 15:41 #2
Prøv at vise en formel
Avatar billede store-morten Ekspert
27. juli 2016 - 15:49 #3
Den skal f.eks. se sådan ud:

=SumByColor(A1;A1:A6)

Summer A1:A6 med samme farve som A1

Funktionen opdateret kun når celle værdi ændres, ikke på farveskift.
Avatar billede kabbak Professor
27. juli 2016 - 16:59 #4
prøv at sætte Public foran

Public Function SumByColor(CellColor As Range, SumRange As Range)
Application.Volatile
Dim ICol As Integer
Dim TCell As Range
ICol = CellColor.Interior.ColorIndex
For Each TCell In SumRange
If ICol = TCell.Interior.ColorIndex Then
SumByColor = SumByColor + TCell.Value
End If
Next TCell
End Function
Avatar billede store-morten Ekspert
27. juli 2016 - 17:41 #5
Har du lagt koden i et Modul?
Som du har om døbt til: SumByColor
Modul og Functionen må ikke hedde det samme

Så giver formlen:
=SumByColor(A1;A1:A6)
#Name
Avatar billede Hemi_DK Novice
28. juli 2016 - 08:47 #6
Har prøvet at indsætte VBA koden Kabbak har skrevet. Den auto refresher næste gang arket åbnes. Men det kunne være rart, hvis det ikke var nødvendigt?

Store-Morten - Mht. Modul name, har det hjulpet jeg har omdøbt denne til ikke og hedde Modul1 længere. Men hvis jeg åbner excel filen på en anden pc, fejler den stadig og skriver #name? i cellerne.
Avatar billede kabbak Professor
28. juli 2016 - 14:54 #7
Har du lagt koden i DIN personlige projektmappe, for så virker den ikke på andre pc
Avatar billede Hemi_DK Novice
28. juli 2016 - 16:03 #8
Fandt fejlen før på dagen - Vil mene det skyldes jeg ikke havde "enable macros"

Jeg tildeler Kabbak point, da det er denne løsning som er kommet nærmest på det svar jeg søgte :o)
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