Avatar billede glofp Nybegynder
17. januar 2002 - 10:24 Der er 4 kommentarer og
2 løsninger

For-next eller anden løkke der virker

Jeg har et regneark hvor jeg skal have udført en kopiering op til 25 gange.
Jeg har skrevet følgende kode, men problemet er, at kommandoen kun udføres én gang, d.v.s. Next sætningen udføres ikke.

Dim iTæller As Integer

For iTæller = 1 To 25
    Range(\"A1\").Select
    If Range(\"A1\").Value <= 0 Then
        Range(\"B1\").Select
            Selection.Copy
            Range(\"H1\").Select
            ActiveSheet.Paste
    Else
        Range(\"A1\").Select
        Selection.Copy
        Range(\"H1\").Select
        ActiveSheet.Paste
    End If
     
    Next

Hvor er fejlen?
Avatar billede lrp Nybegynder
17. januar 2002 - 10:27 #1
For-next løkken udføres korrekt. Problemet er, at koden inden i løkken udføres ens hver gang. Du udfører altså præcis de samme ting 25 gange. Det går bare så hurtigt, at du ikke når at opdage det.
Avatar billede lrp Nybegynder
17. januar 2002 - 10:33 #2
For at det skal virke, må koden inden i løkken gøres dynamisk. I stedet for at du fx markerer celle A1 hver gang, formoder jeg, at du gerne vil have markeret celle A1, derefter A2, A3 osv. Det kan du ændre ved at rette:

Range(\"A1\").Select til Cells(iTæller,1).Select
Range(\"A1\").Value til Cells(iTæller,1).Value
Range(\"B1\").Value til Cells(iTæller,2).Value
Range(\"H1\").Value til Cells(iTæller,8).Value

Hvorefter det burde virke efter hensigten.
Avatar billede kedde65 Praktikant
17. januar 2002 - 20:08 #3
Ja eller skrive flg kode istedet for!

For iTæller = 1 To 25
    Range(\"A\" & iTæller).Select
    If Range(\"A\" & iTæller).Value <= 0 Then
        Range(\"B\" & iTæller).Select
            Selection.Copy
            Range(\"H\" & iTæller).Select
            ActiveSheet.Paste
    Else
        Range(\"A\" & iTæller).Select
        Selection.Copy
        Range(\"H\" & iTæller).Select
        ActiveSheet.Paste
    End If
     
    Next


Kedde
23. januar 2002 - 12:14 #4
Jeg ville lave den således, så du ingen Select, Copy eller Paste har de sænker hastigheden på koden

Dim iTæller As Integer

For iTæller = 1 To 25
    If Range("A" & iTæller).Value <= 0 Then
        Range("H" & iTæller).Value = Range("B" & iTæller).Value
    Else
        Range("H" & iTæller).Value = Range("A" & iTæller).Value
    End If
Next
27. januar 2002 - 21:53 #5
glofp>> er problemet løst ?
Avatar billede glofp Nybegynder
14. februar 2002 - 14:02 #6
Jeg takker 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

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