Avatar billede fiffi Novice
11. december 2003 - 12:16 Der er 19 kommentarer og
1 løsning

Knap virker først 2. gang

Jeg ved ikke om der er nogen der kan hjælpe mig, men jeg har et problem jeg er ved at få grå hår af.
Jeg har et regneark hvor jeg har en formular til indtastning. Her er lavet et par knapper der selecter bestemte regneark. Det virker helt fint. Problemet er blot at når jeg åbner arket og klikker på knappen der kører et sorteringsscript m.m. virker det ikke helt 1. gang. Den skal køres en gang mere. Er der nogen der har en ide.
Avatar billede bak Forsker
11. december 2003 - 13:37 #1
svært af finde ud af uden koden.
Vis den lige
Avatar billede fiffi Novice
11. december 2003 - 13:42 #2
Ja, i får den "råt for usødet"

Sub GåtilForfald()
    Sheets("forside").Select
    Application.ScreenUpdating = False
    Sheets("Forfald").Select
    Range("A11:H8000").Select
    Selection.ClearContents
    TælFakturaer
    SorterForfald
    Sheets("forfald").Select
    varLøkke2 = 2
    For varLøkke = 2 To Sheets("kunde").Cells(21, 2) + 1
        If Sheets("faktura").Cells(varLøkke, 22) = 0 Then
            Sheets("forfald").Cells(varLøkke2 + 9, 1) = Sheets("faktura").Cells(varLøkke, 1)
            Sheets("forfald").Cells(varLøkke2 + 9, 2) = Sheets("faktura").Cells(varLøkke, 5)
            Sheets("forfald").Cells(varLøkke2 + 9, 3) = Sheets("faktura").Cells(varLøkke, 10)
            Sheets("forfald").Cells(varLøkke2 + 9, 4) = Sheets("faktura").Cells(varLøkke, 12)
            varBeløb = Sheets("faktura").Cells(varLøkke, 11) * Sheets("faktura").Cells(varLøkke, 12) / 100
            varBeløb = varBeløb - Sheets("faktura").Cells(varLøkke, 14) - Sheets("faktura").Cells(varLøkke, 15) - Sheets("faktura").Cells(varLøkke, 16) - Sheets("faktura").Cells(varLøkke, 17)
            varBeløb = varBeløb
            If Sheets("kunde").Cells(8, 2) = 0 Then
                Sheets("forfald").Cells(varLøkke2 + 9, 5) = 0
            Else
                Sheets("forfald").Cells(varLøkke2 + 9, 5) = varBeløb * (100 - Sheets("faktura").Cells(varLøkke, 13)) / 100
            End If
            Sheets("forfald").Cells(varLøkke2 + 9, 6) = Sheets("faktura").Cells(varLøkke, 4)
            Sheets("forfald").Cells(varLøkke2 + 9, 7) = varBeløb
            If Sheets("faktura").Cells(varLøkke, 4) < Now Then
                Sheets("forfald").Cells(varLøkke2 + 9, 8) = varBeløb
            End If
            varLøkke2 = varLøkke2 + 1
        End If
    Next
    Sheets("forfald").Select
    Range("A2").Select
    Sheets("forfald").Select
    frmFaktura.Hide
End Sub
Avatar billede fiffi Novice
11. december 2003 - 14:09 #3
Jeg kan lige knytte en yderligere kommentar. Hele scriptet virker som sådan. Det er blot at den ikke skifter til arket "Forfald", men til arket "Faktura".
Når jeg kører scriptet anden eller 3-4 gang virker det fint. Det er mig derfor en gåde.
Avatar billede bak Forsker
11. december 2003 - 14:44 #4
Der er (så vidt jeg kan se) ikke noget her der gør at den skifter til Faktura eller ikke skulle virke, men det kan jo ligger i en af de to sub's du ellers kører i denne sub. hermed mener jeg
TælFakturaer
SorterForfald

prøv at vise disse også
Avatar billede b_hansen Novice
11. december 2003 - 14:55 #5
Nu er jeg ikke en haj udi vba, men kan det ikke skyldes, at du ikke aktiverer det ark, du har valgt?

Du har jo sat "Application.ScreenUpdating = False" først i rutinen, og den bliver, så vidt jeg kan se, ikke slået til igen.
Avatar billede fiffi Novice
12. december 2003 - 10:58 #6
Så, undskyld ventetiden, men nu er jeg på "pinden igen".
Jeg har forsøgt at gøre nogle af linierne inaktive, men problemet er stadig det samme. 1. gang jeg klikker på knappen når filen er åbnet, "Hider" den Formen, men den skifter ikke til arket "Forfald". Hermed den nye kode:

Private Sub cmdForfald_Click()
'    subGemFaktura '
    Sheets("forside").Select
'    Application.ScreenUpdating = False
    Sheets("Forfald").Select
    Range("A11:H8000").Select
    Selection.ClearContents
'    TælFakturaer
'    SorterForfald
    Sheets("forfald").Select
    varLøkke2 = 2
    For varLøkke = 2 To Sheets("kunde").Cells(21, 2) + 1
        If Sheets("faktura").Cells(varLøkke, 22) = 0 Then
            Sheets("forfald").Cells(varLøkke2 + 9, 1) = Sheets("faktura").Cells(varLøkke, 1)
            Sheets("forfald").Cells(varLøkke2 + 9, 2) = Sheets("faktura").Cells(varLøkke, 5)
            Sheets("forfald").Cells(varLøkke2 + 9, 3) = Sheets("faktura").Cells(varLøkke, 10)
            Sheets("forfald").Cells(varLøkke2 + 9, 4) = Sheets("faktura").Cells(varLøkke, 12)
            varBeløb = Sheets("faktura").Cells(varLøkke, 11) * Sheets("faktura").Cells(varLøkke, 12) / 100
            varBeløb = varBeløb - Sheets("faktura").Cells(varLøkke, 14) - Sheets("faktura").Cells(varLøkke, 15) - Sheets("faktura").Cells(varLøkke, 16) - Sheets("faktura").Cells(varLøkke, 17)
            varBeløb = varBeløb
            If Sheets("kunde").Cells(8, 2) = 0 Then
                Sheets("forfald").Cells(varLøkke2 + 9, 5) = 0
            Else
                Sheets("forfald").Cells(varLøkke2 + 9, 5) = varBeløb * (100 - Sheets("faktura").Cells(varLøkke, 13)) / 100
            End If
            Sheets("forfald").Cells(varLøkke2 + 9, 6) = Sheets("faktura").Cells(varLøkke, 4)
            Sheets("forfald").Cells(varLøkke2 + 9, 7) = varBeløb
            If Sheets("faktura").Cells(varLøkke, 4) < Now Then
                Sheets("forfald").Cells(varLøkke2 + 9, 8) = varBeløb
            End If
            varLøkke2 = varLøkke2 + 1
        End If
    Next
'    Application.ScreenUpdating = True
    Sheets("forfald").Select
    Range("A2").Select
    Sheets("forfald").Select
    frmFaktura.Hide
End Sub
Avatar billede bak Forsker
12. december 2003 - 13:09 #7
Ja, det ser s.. mærkeligt ud. der er jo ikke fordi den ikke er selected, for det gør du jo 3 gange.
prøv lige at udskifte

frmFaktura.Hide

med

Unload me
Avatar billede b_hansen Novice
12. december 2003 - 13:14 #8
alternativt kunne man måske flytte den sidste 'Sheets("forfald").Select' ned efter 'frmFaktura.Hide' ?
Avatar billede fiffi Novice
12. december 2003 - 13:17 #9
Jeg er ked af det, men det virker stadig ikke. Unload me lukker selve regnearket, og det er det samme selv om rækkefølgen er uændret. Det er mig lidt en gåde.
Avatar billede fiffi Novice
12. december 2003 - 13:17 #10
Nej sludder. Selv om rækkefølgen er ændret.
Avatar billede b_hansen Novice
12. december 2003 - 13:40 #11
bak> kan problemet løses ved at ændre .Select til .Activate?
Avatar billede fiffi Novice
12. december 2003 - 13:41 #12
Er også prøvet.
Avatar billede fiffi Novice
12. december 2003 - 13:45 #13
Som sagt er det kun 1. gang knappen aktiveres. De efterfølgende gange er det ok.
Avatar billede bak Forsker
12. december 2003 - 13:51 #14
Jeg skrev godt Unload me, men mente Unload frmFaktura.
Avatar billede bak Forsker
12. december 2003 - 13:52 #15
hvis du ikke har puttet for mange data i, er du velkommen til at sende det til

tommybak@netscape.net
Avatar billede fiffi Novice
12. december 2003 - 13:55 #16
Jeg troede lige at det virkede, men den lukkede også hele arket ned, og ikke kun formen.
Avatar billede bak Forsker
12. december 2003 - 15:08 #17
Jeg kan godt få den til at spille, men, men, men
der er noget struktur den bør ændres lidt ved.

I Thisworkbook i sub workbook.open skal du inaktivere linien
SorterFakturanummer
da det er den der får den til at springe tilbage til forsiden

der er også nogle andre ting der med fordel kunne optimeres, men det vender jeg tilbage med. :-)
Avatar billede fiffi Novice
12. december 2003 - 15:13 #18
Alle tiders Tommy. Jeg vil gerne have mange input. Jeg har kun arbejdet 3 måneder med VBA så alt hjælp modtages med tak.
Avatar billede bak Forsker
14. december 2003 - 13:46 #19
et svar :-)
Avatar billede fiffi Novice
14. december 2003 - 17:40 #20
Tak for hjælpen
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