Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 15:35 Der er 12 kommentarer og
1 løsning

Stoppe loop, når en celle rammer en hvis værdi.

Hej

Jeg vil gerne have mit loop til at stoppe, når det når til en vis værdi.

VBA ser således ud:

Range("c7").Value = Range("c7").Value + 1
Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop
End Sub

Til denne skal der tilføjes, at når "c7" bliver lig "e9" skal loopet stoppe.
Avatar billede supertekst Ekspert
19. marts 2010 - 15:43 #1
Loop Until ....
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 15:47 #2
Ja, det har jeg prøvet, men hvor skal den komme?

Den skriver compile error, når jeg har følgende:

Range("c7").Value = Range("c7").Value + 1
Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop Until Range("c7") = Range("e9")
Loop
Avatar billede supertekst Ekspert
19. marts 2010 - 15:51 #3
Ok - prøver...
Avatar billede supertekst Ekspert
19. marts 2010 - 15:57 #4
Syntax

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]

Loop

Or, you can use this syntax:

Do
[statements]
[Exit Do]
[statements]

Loop [{While | Until} condition]
Avatar billede supertekst Ekspert
19. marts 2010 - 16:03 #5
Sub test2()
  Range("c7").Value = Range("c7").Value + 1

  Do Until Range("C7") = Range("E9")
      Range("c7").Value = Range("c7").Value + 1
  Loop
End Sub
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 16:14 #6
Ja, supertekst... Det har jeg prøvet, men der jo betingelser der skal opfyldes. Kan det lykkedes med denne samtidig:

Do Until Range("D9") = 1
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 17:14 #7
Mit problem er, at den ikke vil acceptere to "do until". Hvordan løser jeg dette?
Avatar billede supertekst Ekspert
19. marts 2010 - 17:46 #8
D9 bliver jo ikke ændret i det viste?

Range("c7").Value = Range("c7").Value + 1
Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop Until Range("c7") = Range("e9")
Loop

Det der er galter, at Loop Until & Loop afslutter2 loops - men der er kun een Begyndelse Do Until..

--

Do
Range("c7").Value = Range("c7").Value + 1
Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop
Loop Until Range("c7") = Range("e9")

Her er der ingen fejl..
Avatar billede Tryllefeen Nybegynder
20. marts 2010 - 17:20 #9
Hej

Det virker som sådan fint. Problemet er bare, at den skal stoppe hver gang D9=1, men det gør den ikke længere, da den nederste linie på en eller anden måde over-ruler den anden.
Så det er, hvis en af betingelserne ikke er opfyldt, skal den stoppe loopet.
Avatar billede supertekst Ekspert
21. marts 2010 - 09:14 #10
Prøv at se bort fra VBA-koden et øjeblik og beskriv det ønskede med alm. ord.

Er der tale om 2 forskellige loops - et ydre og et indre - eller 
kun eet med to betingelser og/eller??

Vedr. D9=1 - peger D9 på en af de celler, der indgår i loops?
Avatar billede Tryllefeen Nybegynder
21. marts 2010 - 10:43 #11
"C7" er datoen, hvor den hver gang skal vælge den næste i række. Der og dog nogle datoer, der ikke forekommer, hvilket "D9" tester, og skal derfor være lig 1 for at det er opfyldt.
Derudover skal loopet stoppe, når det når til den sidste dato i rækken "E9", da den ellers aldrig ville stoppe.
Avatar billede Tryllefeen Nybegynder
22. marts 2010 - 10:56 #12
Jeg har fået det løst.

Mange tak for hjælpen.
Smid et svar, og jeg skal give dig point.

Mvh
Avatar billede supertekst Ekspert
22. marts 2010 - 13:01 #13
Fint - selv tak & et svar...
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
Kurser inden for grundlæggende programmering

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