Ajde pročitajte pažljivo pitanje pre nego što napišete odgovor. U prvom postu je jasno naglašeno da se podaci učitavaju iz baze, tako da je broj redova i kolona već definisan i ne treba ga ponovo definisati. Drugo, nije pametno ovakve stvari stavljati u Load event forme, jer prvo, ne znamo tačno kada će Grid biti povezan sa bazom, a drugo kada dođe do refresha prikaza, boje će se izgubiti. Bolje je napraviti proceduru koja radi bojenje i onda je pozvati kad god je potrebno. Dakle, isto kao ovo poslednje Erino rešenje, samo bez ponovnog definisanja redova i kolona
Code:
Dim i As Long
Dim j As Long
With MSHFlexGrid1
For i = 1 To .Rows - 1 Step 2
.Row = i
For j = 1 To .Cols - 1
.Col = j
.CellBackColor = RGB(0, 0, 200)
Next j
Next i
End With
@zomar
Prijavljuje ti grešku zato što je TextMatrix String Tipa, a ti radiš sa numeričkom vrednošću. To možeš da izbegneš na dva načina, prvi je da staviš 1 pod navodnike, a drugi da tražiš brojčanu vrednost TextMatrix-a sa cLng ili Val, recimo Val(.TextMatrix(i, j) Mada, bez obzira na to, tvoj kod neće raditi kako treba, jer nisi dobro postavio uslov, odnosno definišeš uslov za petlju sa određenom ćelijom od koje počinješ, a sledeći put proveravaš uslov sa poslednjom ćelijom (poslednji red i poslednja kolona), jer si odmah po prvom izvršavanju Do... Loop petlje i i j "bacio" na maksimalnu vrednost. Takođe, nisi dobro objasnio šta želiš da postigneš. Ako hoćeš da sva polja koja sadrže 1 obojiš u crveno, a sva ostala u zeleno, ne treba ti ta Do... Loop petlja uopšte, možeš jednostavno ovako
Code:
Dim i As Long
Dim j As Long
With MSHFlexGrid1
For j = 1 To MSHFlexGrid1.Cols - 1
For i = 1 To MSHFlexGrid1.Rows - 1
If .TextMatrix(i, j) = "1" Then
.Row = i
.Col = j
.CellBackColor = vbRed
Else
.Row = i
.Col = j
.CellBackColor = vbGreen
End If
Next i
Next j
End With
a ako ti je cilj da bojiš kolonu zelenom sve dok ne naiđe na 1, a onda pređe na sledeću onda jednostavno napusti petlju čim nađeš 1. Ovako
Code:
Dim i As Long
Dim j As Long
Dim provera As Boolean
With MSHFlexGrid1
For j = 1 To MSHFlexGrid1.Cols - 1
For i = 1 To MSHFlexGrid1.Rows - 1
If .TextMatrix(i, j) = "1" Then
.Row = i
.Col = j
.CellBackColor = vbRed
Exit For
Else
.Row = i
.Col = j
.CellBackColor = vbGreen
End If
Next i
Next j
End With
Ako hoćeš nešto treće, onda objasni šta.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti