- ベストアンサー
Accessレポートで1行おきに色を変える
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) FontCount = FontCount + 1 If FontCount Mod 2 = 1 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 16777164 End If End Sub としてみました。 ですが何らかわりなく… 試しに Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) FontCount = FontCount + 1 If FontCount Mod 2 = 1 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 16777164 End If MsgBox FontCount End Sub としてみたところずーっと「1」が表示され、変数がかわってないようです。 いったいどこがダメなのでしょうか? 確か以前できたはずなのに…(><)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
変数がPrivate なので、Subが呼ばれるたびに初期化されるからです。 FontCount = FontCount + 1 の前に Static FontCount As Long と入れるとイケます。 (他にも方法はありますが、とりあえず。) 頑張ってくださいヽ(^。^)ノ
その他の回答 (4)
- maruru01
- ベストアンサー率51% (1179/2272)
No.4です。 宣言部間違ってました。 ****宣言部に**** Dim flgFont As Boolean
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 詳細_Printイベントではなく、詳細_Formatイベントに記述して下さい。 ところで、交互の判定変数(FontCount)を数値型にしていますが、この場合はブール型でいいのでは? ****宣言部に**** Dim flgFont ****詳細_Formatイベントで**** Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) flgFont = Not flgFont If flgFont Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 16777164 End If End Sub
お礼
回答ありがとうございます。 実は印刷時とフォーマット時両方で試してみたんですけどダメだったんです。 別方法も試してみたいと思います。 ありがとうございました。
あまり詳しくないのですが、 Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) のPrintCount と、Sub中のFontCountと変数名が違うことは問題ないですか?
お礼
回答ありがとうございます。 変数の名前の間違いということでしょうか? 見たところ変数名の違いは見当たらないようですが。。。
- tonjiru
- ベストアンサー率37% (63/168)
Dim FontCount As Integer 念のため・・変数の宣言はしてありますよね?
お礼
回答ありがとうございます。 はい、してあるんですけどね…
お礼
回答ありがとうございます。 なんとかできました。 前もこんなことしたのかな私… とりあえずできたのでよしとします! ありがとうございました。 P.S.今みたところ、No.3とNo.4の回答が逆になってるんですが…なぜでしょうか(笑