Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketHjælp Loop fejl

 Besvar Besvar
Forfatter
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg 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"
           
             beskriv = Ark12.Cells(linieexcel, 2).Value
             nprice = Ark12.Cells(linieexcel, 3).Value
             tstk = Ark12.Cells(linieexcel, 6).Value
             tprice = Ark12.Cells(linieexcel, 7).Value
             Weight = Ark12.Cells(linieexcel, 8).Value
             unit = Ark12.Cells(linieexcel, 9).Value
             
            If Trim(tstk) = "" Then
            If Trim(nprice) > Trim(tprice) Then tstk = "1" Else tstk = ""
       
            If unit = "KG" Then Weight = CInt(Weight) * 1000 Else Weight = CInt(Weight)
       
            If test = "yes" Then
             Ark2.Cells(collumexcel, 1).Value = beskriv
             Ark2.Cells(collumexcel, 2).Value = nprice
             Ark2.Cells(collumexcel, 3).Value = tstk
             Ark2.Cells(collumexcel, 4).Value = tprice
             Ark2.Cells(collumexcel, 7).Value = Weight
            collumexcel = collumexcel + 1
            linieexcel = linieexcel + 1
             Else
        End If
         Loop
         
    End If
End Sub
Til top



Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 15.Jan.2013 kl. 11:15
Kære Simpson,

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.
Til top
Jan B. Hansen Se dropdown
Bronze bruger
Bronze bruger


Medlem: 15.Feb.2010
Status: Offline
Point: 64
Direkte link til dette indlæg Sendt: 15.Jan.2013 kl. 14:19
Godt ord igen Excelgaard Unhappy
 
JanB
Med venlig hilsen



Jan
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 15.Jan.2013 kl. 18:04
Citat: Jan B. Hansen Jan B. Hansen skrev:

Godt ord igen Excelgaard

???
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.
Til top
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg Sendt: 16.Jan.2013 kl. 23:28
Excelgaard jeg kan godt se hvad du mener med stykket her, kan bare ikke rigtig se hvordan jeg ellers skal kan sætte den struktur samen

            If Trim(tstk) = "" Then 
            If Trim(nprice) > Trim(tprice) Then tstk = "1" Else tstk = "" 
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 17.Jan.2013 kl. 08:52
Hej igen,

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 Big smile)
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.
Til top
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg Sendt: 17.Jan.2013 kl. 16:10
Så er den der næsten, fik sat lidt bedre struktur på, nu har jeg bare et sidste problem, den siger at jeg har "Type Mismatch"
 
Og jeg kan se at det er hver gang den har loopet en gang og når til
 
             beskriv = Ark12.Cells(linieexcel, 2).Value
             nprice = Ark12.Cells(linieexcel, 3).Value
             tstk = Ark12.Cells(linieexcel, 6).Value
             tprice = Ark12.Cells(linieexcel, 7).Value
             Weight = Ark12.Cells(linieexcel, 8).Value
             unit = Ark12.Cells(linieexcel, 9).Value
 
Så kommer fejlen. Jeg vil tro det er en af disse som ikke skal stå som string alligevel?
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 17.Jan.2013 kl. 17:46
Jeg er 'på farten' lige nu, og kan derfor ikke teste din kode, men her er, hvordan du finder sådan en fejl...

Lav hver enkeltt variabel om til en 'Variant' en af gangen, og der, hvor koden pludselig virker, har du din variabel, der er deklareret forkert.

Indsæt dernæst en linje i koden, efter, hvor vartablen bliver brugt, i retning af:

MsgBox TypeName(Variabel)

...og, dette vil give dig det rette variabel type.
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.
Til top
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg Sendt: 17.Jan.2013 kl. 18:06
Slevom jeg sætter dem alle som Variant giver det samme fejl, jeg ved godt jeg er lidt besværlig :D Men er ny i VBA
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 18.Jan.2013 kl. 08:30
OK, upload dit regneark, som du har det til at se ud nu, og jeg kigger på det...
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.
Til top
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg Sendt: 18.Jan.2013 kl. 22:15
Her er den

Kunne ikke uploade den her, fylder for meget :D

http://www.modme-community.com/magie/dll/skiltemakro.xlsm
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 19.Jan.2013 kl. 08:11
Hej Simpsons,

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.
Til top
simpson Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Direkte link til dette indlæg 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
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 21.Jan.2013 kl. 09:10
Nåh, sur og sur ...  Smile

...snarere lidt irriteret over, at fejl, jeg allerede en gang havde påpeget ikke var blevet rettet...

...og, se, om ikke der blot skulle lidt struktur på, så ville løsningen let kunne findes  Big smile

Glæder mig, at det lykkedes for dig, og håber du fik lært lidt undervejs  Geek
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.
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk