Avatar billede tvc Seniormester
30. december 2005 - 16:32 Der er 2 kommentarer og
1 løsning

Function mister sit resultat ved skjulning af række i andet ark.

Jeg har følgende funktion, der anvendes til at tælle antallet af celler indeholdende et R, G eller et !.

----------------------------

' Funktion til brug for optælling af antal bemærkninger

Function countBMK(bmkRange As Range) As String

Application.Volatile 'Genberegning af funktion alle steder den er anvendt

AD = bmkRange.Address
countBMK = Application.WorksheetFunction.CountIf(Range(AD), "R")
countBMK = countBMK + Application.WorksheetFunction.CountIf(Range(AD), "G")
countBMK = countBMK + Application.WorksheetFunction.CountIf(Range(AD), "!")

If countBMK = 0 Then
    countBMK = "Ingen"
End If

End Function

----------------------

Hvis jeg i mit Ark1 anvender funktionen kan jeg få den til at virke helt som den skal.

=countBMK(C1:C10)

Kolonne C
R
R
G
!
OK
OK
!

Resultatet af ovenstående giver 5.

Hvis jeg så skifter til Ark2 og vælger at skjule en række og så går tilbage på Ark1 er der sket noget meget underligt.

Min funktion viser ikke længere resultatet 5 men teksten Ingen, som funktionen kun skal vise hvis der ikke er nogle celler i området indeholdende R, G eller !.

Er der en der ved hvorfor den gør dette og om der er en løsning på problemet (ønsker at den skal huske resultatet også efter jeg har skjult en røkke i et andet ark).

Med venlig hilsen

TVC
Avatar billede sjap Praktikant
30. december 2005 - 16:49 #1
Funktionen ved ikke, hvor kaldet af funktionen kommer fra, så derfor tror funktionen at beregningerne foretages i ark2. Prøv f.eks. med:


Function countBMK(bmkRange As Range) As Variant

Application.Volatile 'Genberegning af funktion alle steder den er anvendt

AD = bmkRange.Address

countBMK = Application.WorksheetFunction.CountIf(Worksheets("Ark1").Range(AD), "R")
countBMK = countBMK + Application.WorksheetFunction.CountIf(Worksheets("Ark1").Range(AD), "G")
countBMK = countBMK + Application.WorksheetFunction.CountIf(Worksheets("Ark1").Range(AD), "!")

If countBMK = 0 Then
    countBMK = "Ingen"
End If


End Function
Avatar billede tvc Seniormester
30. december 2005 - 16:53 #2
SUPER sjap - det har jeg bare kæmpet længe med :-)

Så er det tid til at komme videre med det som i virkeligheden skulle være færdig i dag :-)

TVC
Avatar billede sjap Praktikant
30. december 2005 - 16:55 #3
Så prøv med nedenstående, så sparer du lidt :0)

Function countBMK(bmkRange As Range) As Variant

Application.Volatile 'Genberegning af funktion alle steder den er anvendt

countBMK = Application.WorksheetFunction.CountIf(bmkRange, "R")
countBMK = countBMK + Application.WorksheetFunction.CountIf(bmkRange, "G")
countBMK = countBMK + Application.WorksheetFunction.CountIf(bmkRange, "!")

If countBMK = 0 Then
    countBMK = "Ingen"
End If


End Function
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