ElmotriX Skrevet 9. desember 2006 Skrevet 9. desember 2006 Public Sub finnrad() Dim SKRIVERAD Dim SKRIVEBEKREFTELSE Dim LUP SKRIVERAD = 3 LUP = 1 Do SKRIVEBEKREFTELSE = Ark1.Cells(SKRIVERAD, 11).Value If SKRIVEBEKREFTELSE = 1 Then SKRIVERAD = SKRIVERAD + 1 Else: LUP = 0 Loop Until LUP = 0 End Sub den er til et exel ark, skal kjøre igjennom en liste med personer og dems info og finne en open rad. skrivebekreftelse er en kode i ragnearket som er 1 om raden har info, og 0 om raden er tom. variabelen lup bruker jeg bare for å kunne komme ut av loop'en. når jeg prøver å kjøre den får jeg feilmelding "loop without Do" noen som aner hvorfor`?
ze5400 Skrevet 9. desember 2006 Skrevet 9. desember 2006 (endret) Jeg kan ikke VBA, men kansje dette virker? Public Sub finnrad() Dim SKRIVERAD As Integer Dim SKRIVEBEKREFTELSE As Integer Dim LUP As Integer SKRIVERAD = 3 LUP = 1 Do Until LUP = 0 SKRIVEBEKREFTELSE = Ark1.Cells(SKRIVERAD, 11).Value If SKRIVEBEKREFTELSE = 1 Then SKRIVERAD = SKRIVERAD + 1 Else LUP = 0 End If Loop End Sub Jeg har ikke testet det, og det ser sikkert helt på trynet. Endret 9. desember 2006 av ze5400
GeirGrusom Skrevet 9. desember 2006 Skrevet 9. desember 2006 Du mangler End If på IF-en din. Du trenger ikke end if hvis det går på en linje, men du bruker flere. Dessuten kan du bytte ut LUP = 0 Med Exit Do og kutte ut testen din, så blir det litt mer oversiktelig.
Harald Staff Skrevet 9. desember 2006 Skrevet 9. desember 2006 Du bør la Excel gjøre søkejobben for deg heller enn å loope celler og lese innhold, som f.eks: Sub FinnRad() MsgBox Ark1.Columns("K:K").Find(What:="0").Row End Sub HTH. Beste hilsen Harald
ElmotriX Skrevet 9. desember 2006 Forfatter Skrevet 9. desember 2006 Du bør la Excel gjøre søkejobben for deg heller enn å loope celler og lese innhold, som f.eks: Sub FinnRad() MsgBox Ark1.Columns("K:K").Find(What:="0").Row End Sub HTH. Beste hilsen Harald 7463215[/snapback] sub rutinen er for å finne ut hvilken rad den kan skrive til. er det mulig å bytte ut msgbox'en med noe annet? og vil den søke nedover og levere den første raden som satt variabel, eller en tilfeldig med 0 ? har også gjort som geirgrusom sa og lagt til exit do i stedenfor.
Harald Staff Skrevet 10. desember 2006 Skrevet 10. desember 2006 Sub'er som skal returnere noe heter Function. Så skriv om til f.eks dette Function FirstZeroRow() As Long On Error Resume Next FirstZeroRow = Ark1.Columns("K:K").Find(What:="0").Row End Function Det er veldig vanskelig å råde om hva som er praktisk uten å forstå hva dette gjør og hvorfor. Din opprinnelige kode produserer heller ingenting, den finner en null og glemmer umiddelbart både det og alt det andre den holdt på med. Kan du gi litt mer detaljer om hva dette er i hvilken sammenheng ? HTH. Beste hilsen Harald
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå