Jaha och nu har man fått totalt hjärnsläpp Lite uppdatering Jag förstår inte riktigt vad det är du ska göra, för gör du det jag tror du ska göra så är koden helt fel. Ett alternativ: Jag ville ha ut från en flexgrid till en picturebox Föresten AndreasHjälp med en loop
Detta problem kan jag inte tänka mig så svårt men jag får endå inte till det.
jag har nu denna kod
<code>
Do Until kolumn = 5
kolumn = kolumn + 1
Select Case kolumn
Case 1
lodratt = 50
Case 2
lodratt = 500
Case 3
lodratt = 2500
Case 4
lodratt = 3500
Case 5
lodratt = 4500
End Select
flexTables.Col = kolumn
flexTables.Row = 5
Picture1.CurrentX = lodratt
Picture1.CurrentY = 50
Picture1.Print flexTables.Text
Loop
</code>
Med denna kod så får jag ut en rad i en tabell
Nu är det så att jag vill den ska loopa till den får ett "*null*" värde i den första kolumnen och ska då sluta loopa.
För att göra det enkelt fär mig så testade jag att sätta en loop utanför denna loop och loopa 5 gånger.
Men fick inte ens det att fungera.
Som ni kan se i koden så måste
<code>flexTables.Row = 5</code>
öka med 1 hela tiden men det är ju lätt om man har en loop
Sedan måste
<code>Picture1.CurrentY = 50</code>
öka med 300 varje gång, är ju heller inga problem tror jag när det gäller en loop.
Dock vet jag ju inte hur man ska göra för att få en loop att fungeraSv: Hjälp med en loop
Koden ser kanske inte så snyggt ut men den fungerar
<code>
Dim kolumn, lodratt, vagratt, rad As Integer
Dim avsluta As String
vagratt = 50
rad = 4
Do Until rad = 15
rad = rad + 1
Do Until kolumn = 5
kolumn = kolumn + 1
Select Case kolumn
Case 1
vagratt = 50
Case 2
vagratt = 500
Case 3
vagratt = 2500
Case 4
vagratt = 3500
Case 5
vagratt = 4500
End Select
flexTables.Col = kolumn
flexTables.Row = rad
Picture1.CurrentX = vagratt
Picture1.CurrentY = lodratt
If flexTables.Text = "tomt" And kolumn = 1 Then GoTo avsluta
Picture1.Print flexTables.Text
Loop
kolumn = 0
lodratt = lodratt + 300
Loop
avsluta:
</code>
kanske går att trimma dne bättre eller??Sv:Hjälp med en loop
Du skriver: "Nu är det så att jag vill den ska loopa till den får ett "*null*" värde i den första kolumnen".
Borde det inte vara typ:
<code>
Do Until Kolumn = *null* 'Nu vet jag inte riktigt vad du menar med "*null*" men ändå...
</code>
Som du har koden nu så loopar den ju ett fast antal gånger (i senaste koden 15x5 dvs 75 gånger) och det låter ju inte som det du beskriver att den ska göra.
ThomasSv:Hjälp med en loop
Dim rad As Integer
Dim kolumn As Integer
Dim lodratt As Integer
Dim vagratt(1 To 5) As Integer
Dim Radhöjd As Integer
vagratt(1) = 50
vagratt(2) = 500
vagratt(3) = 2500
vagratt(4) = 3500
vagratt(5) = 4500
Radhöjd = Picture1.TextHeight("")
For rad = 4 To 15
If flexTables.TextMatrix(rad, 1) = "tomt" Then Exit For
For kolumn = 1 To 5
Picture1.CurrentY = lodratt
Picture1.CurrentX = vagratt(kolumn)
Picture1.Print flexTables.TextMatrix(rad, kolumn)
Next
lodratt = lodratt + Radhöjd
Next
Sv: Hjälp med en loop
Var inte så lätt att förklara för jag har aldrig kört flexgrid förut i VB6
Den innersta loopen går vågrätt (5 kolumner)
Den andra går max 10 lodrätt men ska sluta om den stöter på ett tomt fält i den första kolumnen
Från början så skrev personen som tipsade om ett exempel att om en kolumn var tomt så skulle den skriva in *null*
Jag tog bort det och skrev in "tomt"
Fast slutresultatet blev att jag skippade helt och låter det var blanktSv: Hjälp med en loop
Din kod fungerar perfekt och är flera gånger så snyggare än min (troligen även mer effektivare)
Fattar inte så mycket men jag använder aldrig flexgrind annars.
Bara till detta projekt :)