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


Emne lukketloop problem

 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: loop problem
    Sendt: 05.Jan.2013 kl. 17:18
Hej,

Jeg arbejder på en makro som kan tage data fra et dos baseret program jeg har.
Men det driller mig lidt med et loop.

Ville gerne have at den tog dataen fra alle rækkerne som kommer i række jeg specificere.

Altså tage alt det tidligere info den tog og så det ekstra for hver linje der kommer.

Er lidt svært at forklarer.

Men kan I se hvorfor denne går i uendeligt loop.

Private Sub CommandButton1_Click()
Tilslut
   
Dim akt As String
Dim afd As String
Dim række As Integer
Dim linieexcel As Integer
Dim varnr As String

Range("A6:G9999").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-9
Range("B1").Select

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False



linieexcel = 2
række = 1

    If Tilslut_OK = True Then
        Kontroller_ONLINE
        If ONLINE_OK = True Then
            On Error Resume Next
            Vælg_dia ("00200")
            Vælg_dia ("35812")
        afd = InputBox("Indtast afdelling med 3 cifre - dvs. 0xx")
        Forr = InputBox("Indtast forretningsnummer med 5 cifre - dvs. 022xx2")
        uge = Ark6.Cells(Date)
       
        varnr = Ark6.Cells(linieexcel, 1).Value
 
    Skriv 23, 32, Forr
    Skriv 23, 38, afd
   
    Do Until Ark6.Cells(linieexcel, 1).Value = ""
    linieexcel = linieexcel + 1
    Loop
   
   
    Skriv 23, 9, varnr
    Enter
   
              liniedsa = liniedsa + 1
             
                    nprice = Læs(11, 29, 11, 34)
                    Weight = Læs(5, 74, 5, 76)
                    unit = Læs(6, 80, 6, 80)
                    beskriv = Læs(4, 37, 4, 68)
                    liniedsa = 11
                Do Until liniedsa = 14
                        PF16
                        uche = Læs(liniedsa, 54, liniedsa, 59)
                        uchep = Læs(liniedsa, 69, liniedsa, 75)
                        uches = Læs(liniedsa, 76, liniedsa, 79)
                    liniedsa = liniedsa + 1
                Loop
               
                Do Until varnr = ""
               
                    Ark12.Cells(linieexcel, 1).Value = varnr
                    Ark12.Cells(linieexcel, 2).Value = beskriv
                    Ark12.Cells(linieexcel, 3).Value = nprice
                    Ark12.Cells(linieexcel, 4).Value = uche
                    Ark12.Cells(linieexcel, 5).Value = uches
                    Ark12.Cells(linieexcel, 6).Value = uchep
                    Ark12.Cells(linieexcel, 7).Value = Weight
                    Ark12.Cells(linieexcel, 8).Value = unit
               
                    linieexcel = linieexcel + 1
                Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True



MsgBox ("Data er nu hentet - husk at opdatere pivottabellen")

End If

End If

End Sub 

Og ellers hvordan jeg tager range af noget data den tager fra et andet program

Håber i kan hjælpe er kørt lidt død i den  
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: 05.Jan.2013 kl. 18:47
Nu skriver du ikke, hvilket af dine loops, der går i uendeligt, men et par ting du kan overveje:

Et loop går i 'uendeligt', hvis kriteriet for at hoppe ud af loopet aldrig bliver opfyldt - altså skal du kigge på dine data, om de nogensinde opfylder kriteriet?

Dernæst kigger dine loops efter tomme celler, hvilket altid er farligt!
En celle behøver ikke være tom, blot fordi den ser tom ud...
Hvis, hvis, f.eks. cellen indeholder et mellemrum?
Cellen ser tom ud, men indeholder rent faktisk noget - et 'blankt' mellemrum.
I dette tilfælde bør man teste på:  Replace(Celle.Value," ","") = ""
Altså udskifte mellemrum med ingenting.

Til sidst ser det ud som om du benytter nogle UDFere i dine loops?
Måske ligger fejlen i disse?
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: 05.Jan.2013 kl. 20:13
det er det her loop der går i uendelighed

Do Until liniedsa = 14 
                        PF16 
                        uche = Læs(liniedsa, 54, liniedsa, 59) 
                        uchep = Læs(liniedsa, 69, liniedsa, 75) 
                        uches = Læs(liniedsa, 76, liniedsa, 79) 
                    liniedsa = liniedsa + 1 
                Loop 

Det jeg vil have den til at gøre er at, først lave en linie med alt det første data, så kører den
denne kommando og for så resten af data'en. Men denne ekstra data har op til 5 muligheder.
Alt sammen på linjer under hinanden.

Så ville gerne have den start data + ekstra data mulighed 1
Så en anden linie med start data + ekstra data mulighed 2 osv.

Nogen ide til hvordan jeg kan få den til dette, driller mig lidt.


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: 05.Jan.2013 kl. 20:33
Hvor får du variablen 'liniedsa' fra???

Jeg kan hverken se variablen blive 'Dim'et' eller tildelt en indledende værdi?

Har du sat 'Option Explicit'???
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: 05.Jan.2013 kl. 20:57
jeg har lavet en module liste for alle commandoer i dette proram den henter fra

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: 06.Jan.2013 kl. 10:04
> Do Until liniedsa = 14

Hvis 'liniedsa' alligvel aldrig må blive mere end 14 kan du så ikke lave en afgrænset loop?

    For liniedsa = 1 To 14
        ' Gør noget...
    Next

Og, igen: Har du 'Option Explicit' sat til?
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: 06.Jan.2013 kl. 18:40
super tak, Excelgaard, du fik mig til at kigge en ekstra gang fuldt igennem, og fandt fejlen :D
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: 06.Jan.2013 kl. 18:52
Velbekomme :-)
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