• ベストアンサー

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」が表示され、変数がかわってないようです。 いったいどこがダメなのでしょうか? 確か以前できたはずなのに…(><)

質問者が選んだベストアンサー

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

変数がPrivate なので、Subが呼ばれるたびに初期化されるからです。 FontCount = FontCount + 1 の前に Static FontCount As Long と入れるとイケます。 (他にも方法はありますが、とりあえず。) 頑張ってくださいヽ(^。^)ノ

w-inty
質問者

お礼

回答ありがとうございます。 なんとかできました。 前もこんなことしたのかな私… とりあえずできたのでよしとします! ありがとうございました。 P.S.今みたところ、No.3とNo.4の回答が逆になってるんですが…なぜでしょうか(笑

その他の回答 (4)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

No.4です。 宣言部間違ってました。 ****宣言部に**** Dim flgFont As Boolean

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。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

w-inty
質問者

お礼

回答ありがとうございます。 実は印刷時とフォーマット時両方で試してみたんですけどダメだったんです。 別方法も試してみたいと思います。 ありがとうございました。

noname#8027
noname#8027
回答No.2

あまり詳しくないのですが、 Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) のPrintCount と、Sub中のFontCountと変数名が違うことは問題ないですか?

w-inty
質問者

お礼

回答ありがとうございます。 変数の名前の間違いということでしょうか? 見たところ変数名の違いは見当たらないようですが。。。

  • tonjiru
  • ベストアンサー率37% (63/168)
回答No.1

Dim FontCount As Integer 念のため・・変数の宣言はしてありますよね?

w-inty
質問者

お礼

回答ありがとうございます。 はい、してあるんですけどね…

関連するQ&A