Avatar billede sfsoeren Novice
28. juli 2009 - 10:36 Der er 9 kommentarer og
1 løsning

Kan ikke skrive i andre celler mens min funktion kører

Hejsa

Jeg har lavet en funktion, hvor jeg tager en række celler/værdier med, og ønsker herefter at skrive et resultat et andet sted i arket.

Eks.:

Function MinFunktion(MitOmråde) '(MitOmråde=A1:A5)
Dim A As Integer

For Each MitOmråde In MitOmråde
    If MitOmråde.Value <> 0 Then
        Cells(1 + A, 5).Value = MitOmråde.Value
    End If
    A = A + 1
Next

End Function

Jeg får ikke lov til at skrive i arket, mens min Funktion kører - findes der en løsning på dette?


Mvh
sfsoeren
Avatar billede mrgumble Nybegynder
28. juli 2009 - 11:16 #1
Jeg tror ikke du kan få lov til at redigere videre i arket mens funktionen kører, men det er der nok en anden der kan svare på.
Til gengæld har du nogle fejl i dit kode:

1. Du mangler at initialisere variablen A til et eller andet. Det er lidt farligt, da du ellers ikke kan være helt sikker på, hvad A er, før du starter.
Løsningen: Tilføj "A = 0" (eller 1) inden For-løkken.
2. "For Each MitOmråde In MitOmråde" - dette virker muligvist ikke som forventet. Inden i løkken, hvad henviser "MitOmråde" så til? Den enkelte celle eller hele området?
Avatar billede sfsoeren Novice
28. juli 2009 - 11:29 #2
Du har ret i punkt 1 - det er ikke pænt at undlade, men Excel er ligeglad.

Værdien for MitOmråde står øverst til højre (MitOmråde=A1:A5)

Dette er naturligvis blot et eksempel, men det kunne være et andet område i arket.

Tak for din tilbagemelding.
Avatar billede mrgumble Nybegynder
28. juli 2009 - 11:41 #3
Nej, læs nu lige hvad der står:

For Each MitOmråde In MitOmråde
    If MitOmråde.Value <> 0 Then
        Cells(1 + A, 5).Value = MitOmråde.Value
    End If
    A = A + 1
Next

"MitOmråde" er naturligvis dit Range("A1:A5") inden løkken, men det er indeni løkken den er dårlig defineret.

Syntaxen for løkken er "For Each Child in Collection".
Du har skrevet "For Each MitOmråde In MitOmråde"; du laver en cirkulær reference da i første iteration af løkken, bliver variablen MitOmråde ændret til en celle el.lign. I anden iteration af løkken - hvad sker der så?
Avatar billede sfsoeren Novice
28. juli 2009 - 11:52 #4
Min funktion start således:

Function MinFunktion(MitOmråde) '(MitOmråde=A1:A5)

Jeg kan herefter (uden problemer) loope igennem det valgte område, ved at bruge "For Each MitOmråde in MitOmråde".

Det virker i fint - altså når jeg ikke også ønsker at skrive i andre celler :-)
Avatar billede mrgumble Nybegynder
28. juli 2009 - 12:25 #5
Det overrasker mig meget, at "For Each MitOmråde in MitOmråde" virker. Hvis det stod til mig, ville jeg skrive:
For Each MinCelle In MitOmråde
    If MinCelle.Value <> 0 Then
        Cells(1 + A, 5).Value = MinCelle.Value
    End If
    A = A + 1
Next

Jeg håber du kan se forskellen.
Avatar billede sfsoeren Novice
28. juli 2009 - 12:33 #6
Jeg kan godt se forskellen, og det vil jeg da overveje at benytte fremadrettet :-)
Avatar billede mrgumble Nybegynder
28. juli 2009 - 12:43 #7
Men til dit oprindelige spørgsmål; hvor lang tid kører din funktion og hvor stort et område har du markeret?
Avatar billede sfsoeren Novice
28. juli 2009 - 13:13 #8
Min funktion bliver afviklet meget hurtigt, da mit område altid vil være relativ begrænset. Dvs. jeg vil nok markere højst 100 rækker (kun en kolonne af gangen), men dette ville varierer fra gang til gang. Det kunne eksempelvis være A1:A100.
Avatar billede mrgumble Nybegynder
28. juli 2009 - 13:21 #9
Så det er reelt et meget lille tidsrum, du er afgrænset fra at ændre i arkene.
Desværre tror jeg ikke, at det kan lade sig gøre da Excel er "optaget" af funktionen og derfor ikke lige er klar.

Hvis det er et stort problem, tror jeg desværre ikke, du får svar i denne tråd, da tråden har taget en anden drejning. :) Så du bliver nok nødt til at oprette et nyt spørgsmål og overveje et andet stykke kode, så jeg ikke kommer efter dig igen.
Avatar billede sfsoeren Novice
31. juli 2009 - 11:26 #10
Lukker "tråden" :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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