1

テーブルとしてレポートを取得しました。各列にランダムな背景色を設定したいと思います。

このために、カスタム スクリプトを作成しました。

Public Function GetColor()

    Dim intHighNumber AS Decimal = 255
    Dim intLowNumber AS Decimal = 100

    Dim NewColor AS String
    Dim Red AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
    Dim Green AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
    Dim Blue AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)


    NewColor = "#" & Hex(Red) & Hex(Green) & Hex(Blue)

    Return NewColor
End Function

最初のセルで、塗りつぶし式を次のように設定しました: =code.GetColor() ここまでは完璧に動作しましたが、今は列の残りの部分に同じ色が必要なので、式 "=Fields!myField .BackgroundColor」ですが、これは機能しません...

これを修正する方法がわかりません...

ご協力ありがとうございます:-)

4

3 に答える 3

0
Private string _LastColorUser="" 

Public Function LastColorUsed()
  Return _LastColorUsed
End Function

Public Function GetColor()

    Dim intHighNumber AS Decimal = 255
    Dim intLowNumber AS Decimal = 100

    Dim NewColor AS String
    Dim Red AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
    Dim Green AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
    Dim Blue AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)


    NewColor = "#" & Hex(Red) & Hex(Green) & Hex(Blue)

    _LastColorUser=NewColor;  

    Return NewColor
End Function
于 2013-10-29T02:38:19.980 に答える
0

必要なことは、ヘッダー、フッターなどで再利用できるように、列の色設定を覚えておくことです。これは、最初に呼び出されたときに新しい色を返し、その場合はそのインデックスに同じ色を返す配列で実現できます。色は以前に割り当てられていました。

カスタムコードは次のとおりです。

Dim Colors(0 to 9) As String

Function GetColor(Color As Integer) As String
  Dim intHighNumber AS Decimal = 255 
  Dim intLowNumber AS Decimal = 100 
  Dim ThisColor AS String 

  if (Colors(Color) <> "") Then
    ThisColor = Colors(Color) 
  else 
    Dim Red AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber) 
    Dim Green AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber) 
    Dim Blue AS Decimal = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber) 
    ThisColor = "#" & Hex(Red) & Hex(Green) & Hex(Blue) 
    Colors(Color) = ThisColor
  End If 

  Return ThisColor 
End Function

次に、セルで、セルに必要なGetColor色のインデックス番号を渡して関数を呼び出すだけです。たとえば、最初の列のヘッダー、詳細、およびフッター セルのBackgroundColorプロパティ式はすべて次のようになります。

=Code.GetColor(0)

次に、列ごとに異なるカラー インデックスを使用します。

すべての色を格納するのに十分なスペースを配列に確保してください (または、ReDim代わりに動的配列を使用する場合は、新しい色を追加するたびに配列を作成することもできます)。

于 2013-10-29T03:17:30.823 に答える