Nu är jag här igen med ett rop efter hjälp när det gäller loopar. VB skriker ilsket att proceduren är för stor. Och tacka fan för det när jag inte klarar av loopar. Mitt program ska söka igenom 38 celler i en Grid efter en cell som det står Sd i. Progammet ska då gå in i respektive cells textbox och hämta en signatur som den sen skriver i i en anna textbox. jag har skrivit följande kod och det alltså 38 stycken liknande där jag bara plussar på i ....Grid1.row = Hur kan en kod med en loop se ut. Allstå om programmet hittar "Sd" i cell 0 ska han skriva in värdet från N1. Hittar han "Sd" i cell 1 ska han skriva in värdet från N2 osv. Hoppas ni förstår vad jag menar. Du borde kunna göra en loop typ: Jo bästa Larz. Nej den koden funkade inte. Jag har inte så många textboxar. Programmet är bl.a ett arbetschema som vi kört på mitt arbete i över 10 år (På en räddningstjänst) Jag har en Grid som visar om man jobbar dag eller natt eller dygn, om man har semester, komp osv. Jag har textboxar som visar alla arbetsnummer på personer och jag har textboxar som visar datum och veckodagar, resten är i princip i Griden. Skickar med en skärmdump så att du kan se hur det ser ut. Meningen är alltså att programmet ska leta reda på rätt datum i en textbox och sedan gå ner i den columnen i Griden och hämta D, N, Dn, eller det nya Sd. När han hittat dom förkortningarna i columnen går han ut till textboxarna längst till vänster och hämtar arbetsnumret. Arbetsnumrena visas sedan på en anna sida som visar vilka som jobbar just den dagen. Typ, så här kan du göra: Tyvärr funkar det inte. Ingenting händer. För dock inget error. Ska försöka att förtydliga mig.Loop igen
Schema.Grid1.row = 0
Schema.Grid1.col = PersCol.Text
If Schema.Grid1.Text = "Sd" Then
Bil1a.Text = Schema.N1.Text
End If
Schema.Grid1.row = 1
Schema.Grid1.col = PersCol.Text
If Schema.Grid1.Text = "Sd" Then
Bil1a.Text = Schema.N2.Text
End If
Schema.Grid1.row = 2
Schema.Grid1.col = PersCol.Text
If Schema.Grid1.Text = "Sd" Then
Bil1a.Text = Schema.N3.Text
End If
OSV.....Sv: Loop igen
<code>
For i = 1 to 38
Schema.Grid&i.row = i
Schema.Grid&i.col = PersCol.Text
If Schema.Grid&i.Text = "Sd" Then
Bil1a.Text = Schema.N&i.Text
End If
Next
</code>
Har tyvärr inte VB installerat så jag kan testa, men något liknande borde fungera.Sv:Loop igen
Har kollat ditt upplägg och funnit att det är fel från början.
Vad skall jag med en Grid till om jag skall börja söka i den.
En Grid presenterar ett slutresultat. Allt det andra kör du i arrayer i bakgrunden.
Säg inte att du lagt upp över 400 TextBoxar !
Om du vidhåller din väg , så har du ju lösningen i mitt ex. i och j Forsats. !
Gör bara en array 12 * 39 468. En liten söt array som du söker genom på < 1 msSv: Loop igen
http://www.brt.se/dump/ Sv: Loop igen
Dim Row As Long
Dim N As TextBox
Schema.Grid1.col = PersCol.Text
For Row = 0 To 37 'Ändra här till
Schema.Grid1.row = Row
If Schema.Grid1.Text = "Sd" Then
Set N = Schema.Controls("N" * Row + 1)
Bil1a.Text = N.Text
End If
Next
Men jag håller med Sven om att det inte är en vacker lösning.
Sv:Loop igen
Programmet ska gå in i en viss column i Grid1 som är olika varje gång. Columnens nummer är samma som står i textrutan PersCol. I den columnen ska sedan loopen söka igenom alla rader till det hittar Sd. När programmet hittat Sd ska det hämta arbetsnumret på en person från en textruta som finns för varje rad (N1-N38). Detta arbetsnummer ska skrivas in i en annan textbox som heter Bil1a.