loop problem
Forfatter
Emne Søg Emne funktioner
simpson
Bronze bruger
Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
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
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
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.
simpson
Bronze bruger
Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
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.
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
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.
simpson
Bronze bruger
Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
Sendt: 05.Jan.2013 kl. 20:57
jeg har lavet en module liste for alle commandoer i dette proram den henter fra
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
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.
simpson
Bronze bruger
Medlem: 05.Jan.2013
Land: Danmark
Status: Offline
Point: 24
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
EXCELGAARD
Platin bruger
Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
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.
Skift forum
-- Vælg forum --
Generelt
Formler
Makro og VBA
Office 365
Udfordringen - med eller uden VBA
Del dine regneark
OFF TOPIC
Forum Generelt
Forum regler, manualer mm.
Ris, ros eller gode idéer.
Forum tilladelser 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