Sätter du verkligen "j" till 0 innan du kallar på ColorRow?
j = 0
Call ColorRow(j,"#FFFFFF","#F4F1F1")
6 svar · 336 visningar · startad av saw
Tidigare så fixade jag varannanradsfärg så här:
j = j + 1
if j mod 2 then
rowColor = "#FFF7F2"
else
rowColor = "#FBE2D3"
end if
%>
<TR bgcolor = "<%= rowColor %>">'osv
innan denna koden, så är j=0
Denna kod fungerar kanonbra, men eftersom den är väldigt ofta
förekommande, så har jag nu lagt den i en sub, som jag inkludera
i de sidor där den behövs.
Så här ser det ut:
Sub ColorRow(iCount,firstColor,secendColor)
iCount = iCount + 1
if iCount mod 2 then
rowColor = firstColor
else
rowColor = secendColor
end if
End Sub
'och jag kallar på den så här:
Call ColorRow(j,"#FFFFFF","#F4F1F1")
%>
<TR bgcolor = "<%= rowColor %>">
Problemet är att första raden inte får någon av färgerna.
När jag jag tittar på den via "visa källa" så på första "varvet" är
rowColor tomt. Därefte så fungerar det bra.
Någon som har en smart idé om varför den uppför sig så här?
:q
Sätter du verkligen "j" till 0 innan du kallar på ColorRow?
j = 0
Call ColorRow(j,"#FFFFFF","#F4F1F1")
Japp, det ligger ovanför denna koden.
Det är därför som jag tycker att detta är så lustigt.
Det blir fel eftersom rowColor är en lokal variabel i subben, och iCount också. Om du vill ha kvar subben så får du dimma rowColor utanför subben, och ha iCount som en referensvariabel
Dim rowColor
Sub ColorRow(ByRef iCount,firstColor,secondColor)
Tack, så enkelt var det.
Ber om ursäkt @nders, jag tycks alltid glömma den länken