2

Excel 2003で正常に機能していた古いマクロがありますが、Excel2010で問題が発生します。問題の原因となる部分は次のとおりです。

If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then
    locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color
End if

ここparActiveConditionで、はのアクティブな条件付きフォーマット番号someRangeです。

背景が「色なし」として選択されている場合someRange.FormatConditions(parActiveCondition).Interior.Color

  • NullExcel2003で
  • Excel2010では0

問題は、黒の背景も0を返すことです。したがって、Excel 2010では、黒の背景と背景色なしを区別することはできなくなっているようです。

誰かが回避策を知っていますか?

ps:「色なし」の代わりに白い背景を選択することはできますが、すべてのスプレッドシートと条件付き書式ルールを変更したくありません。

4

2 に答える 2

5

次のようなブール二次チェックを使用できます

IsNull(someRange.FormatConditions(parActiveCondition).Interior.ColorIndex) 'or
IsNull(someRange.FormatConditions(parActiveCondition).Interior.TintAndShade)

いつ

.FormatConditions(parActiveCondition).Interior.Color = 0
于 2012-10-02T12:30:34.560 に答える
0
Option Explicit

Sub test()

Dim Color
Dim R As Integer
Dim G As Integer
Dim B As Integer

Color = ThisWorkbook.Sheets(1).Range("A1").Interior.Color


R = Color Mod 256
G = (Color \ 256) Mod 256
B = (Color \ 256 \ 256) Mod 256

ThisWorkbook.Sheets(1).Range("B1").Interior.Color = RGB(R, G, B)

End Sub

黒は(0,0,0)を返します
が、「色なし」は(255,255,255)(=白)を返すように見えます

于 2012-10-02T12:18:03.833 に答える