Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Emne: Hjælp Loop fejl Sendt: 14.Jan.2013 kl. 22:09
Hej, jeg kan ikke rigtig se hvorfor min kode giver mig fejlen "Loop Without Do"
Private Sub CommandButton2_Click()
Dim linieexcel As Integer
Dim collumexcel As Integer
Dim unit As String
Dim Weight As String
Dim beskriv As String
Dim nprice As String
Dim tstk As String
Dim tprice As String
Dim test As String
Dim varnr As String
linieexcel = 7
collumexcel = 4
testdate = InputBox("Indtast startdato
for uge med 6 cifre - dvs. DDMMYY")
varnr = Ark12.Cells(linieexcel, 1).Value
Line2:
Do Until
Trim(varnr) = ""
varnr = Ark12.Cells(linieexcel, 1).Value
enddate = Ark12.Cells(linieexcel, 5).Value
If Trim(enddate) = "->" Then enddate = "311298"
Else endate = Ark12.Cells(linieexcel, 5).Value
startdate = Ark12.Cells(linieexcel, 4).Value
If CDate(testdate) >= CDate(startdate) And CDate(testdate) <=
CDate(enddate) Then test = "yes" Else test = "no"
Det er simpelthen noget rod du har lavet! Så er det sagt - dårlig programering, af den anden verden!
Inden vi kaster os over dit problem, så lad os lige starte med at sige, at du mangler, at deklarer din 'testdate' variabel - en 'Option Explicit' ville redde den, og gøre din kode sikker mod fejlindtastninger!
Og, dit problem er slet ikke dit 'Loop', hvilket burde være indelysende, hvis du kigger på dine 'If' strukturer!
F.eks., hvor fører din 'Else' kommando i 5. sidste linje, til?!?
Jeg har lige lagt din kode ind i en Excel-fil, og hvis du rydder op i dine 'If' strukturer, så virker det hele upåklageligt!
Hvor bliver denne linje, f.eks. afgrænset:
If Trim(tstk) = "" Then
Indenfor eller udenfor 'Loop' strukturen?!?
Prøv lige at kigge på din kodestruktur igen, og især dine 'If' opbygninger...
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Hvis du kigger på de sidste 4 linjer af din kode, så vil du se, at du har...
- En 'Else', der ikke fører til noget. - Et 'Loop' der blokerer en 'If' - En 'End If' uden for loopet, uden af have en 'If', der osse er uden for loopet!
Og, undskyld, at jeg siger det, men det springer altså lige i øjene!!!
Retter du de tre fejl, så virker det - ja, nu jeg lige sidder og kigger på det, så tror jeg, at det vil virke, hvis du blot....
- Erstatter 'Else' med 'End If'. - Sletter 'End If' uden for loopet.
Jeg ved, at din makro virker, for det testede jeg for nogle dage siden, så dine grund ideer er der intet i vejen med - du skal blot lære at undgå 'Compile Error, og få noget struktur på din programmering (sagde nørden, der ikke kan huske, hvordan han selv var, som nybegynder )
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Der er umiddelbart ingen fejl i din 'CommandButton2_Click', så jeg forstår ikke, hvorfor du siger, at du får en 'Type Mismatch' fejl i den kode?!?
Til gengæld er der flere fejl i din resterende kode - også fejl, der giver 'Type Mismatch'!
Men, en ting er jeg lidt træt af, og det er, at du ikke benytter 'Option Explicit' og dermed undgår 'Compile Error' - noget, som jeg har bedt dig om at gøre flere gange i denne tråd!
Så, ville du f.eks. have opdaget fejlen i denne linje: If Trim(enddate) = "->" Then enddate = "311298"
Else endate = Ark12.Cells(linieexcel, 5).Value
Og, jeg nævner endda denne fejl-sikring i mit allerførste indlæg i denne tråd! Og, hvem ved, hvor mange af den slags tåbelige unødige fejl, der ellers er rundt omkring i din kode, som du ville have opdaget i samme sekund du havde benyttet 'Option Explicit'?!? Jeg gider i hvert fald ikke lede efter dem!
Jf. punkt 3: www.EXCELGAARD.dk/Side.Kontakt.HTML At fikse simple kompileringsfejl er ikke, hvad nogen gider spilde deres tid med! Fair nok, at du er ny, men det mindste man kan gøre er at følge de råd og anvisninger man får...
Selvfølgelig finder du ikke variabel fejlene, som jeg beskrev, når du ikke har sat 'Option Explicit' som jeg bad dig om - og, dermed bliver jeg noget negativ, for kan jeg ikke stole på, at folk, gør som de får af vide, så kan jeg ikke regne med, at det jeg efterfølgende forsøger har nogen effekt!
Og, der er simpelthen alt for mange fejl rundt omkring i din kode - sikkert osse årsagen til den mystiske 'Type Mismatch' fejl du får - men igen: Flytter du din 'CommandButton2_Click' kode over i et helt nyt regneark, og compiler den, så er der ingen fejl i den kode (bortset fra den uacceptable fejl i linjen, som jeg har vist ovenover).
Altså må fejlen stamme fra nogen af alle dine andre fejl rundt omkring - mit forslag er, at begynde at 'compile' og 'debug' din kode, og gå den igennem med en tættekam...
Altså:
1) Sæt 'Option Explicit' på alle dine moduler. Hvis du ikke ved, hvad det er eller, hvordan man gør, så kig i det mindste i hjælpen til VBA i Excel. Skriv 'Option Explicit' i søgefeltet, og alt, hvad du skal vide kommer op. Noget, du burde have gjort allerede efter mit første indlæg, hvor jeg bad dig om at sikre, at jeg ikke blot brugte tid på 'Option Explicit' fejl!
2) Derefter: Debug/compile din kode! Dette gør du fra VBE-menuen, <Debug -> Compile>
3) Gå koden igennem med en tættekam og ret de fejl, som ovenstående punkter finder, så er jeg ret sikker på, at fejlene forsvinder!
Ovenstående 3 punkter burde være (læs: ER) helt elementær for ALT programmering i Excel!
Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Sendt: 20.Jan.2013 kl. 22:23
Beklager Excelgaard, det var ikke min mening at gøre dig sur, men har fået det løst nu, der var nogle fejl i if strukturen som jeg skrev om og rettede lidt til og så virkede det.
Og jeg forstod ikke i starten hvad du mente med Option Explicet, men det gør jeg nu Tak
Du kan ikke oprette nye emner i dette forum Du kan ikke besvare beskeder i dette forum Du kan ikke slette dine beskeder i dette forum Du kan ikke redigere dine beskeder i dette forum Du kan ikke oprette afstemninger i dette forum Du kan ikke stemme i dette forum