0

専門家が助けてください。次の VBA コードは Excel 2010 では機能しますが、2007 では機能しません。「アプリケーションまたはオブジェクトが定義されていません」というエラーが表示されます。「selection.FormatConditions.Font」には対応していないようです。

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
    Formula1:="=""BREAK TOP"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
    .Color = -16752384  --- Error: application and object undefined 
    .TintAndShade = 0
End With

よろしくお願いします!

4

1 に答える 1

0

2007 Excel でこれをテストすることはできませんが、エラーは間違いなくFormatConditions.Fontオブジェクトにはありません。の割り当てでエラーが発生します.Font.Color

.Font2007 年のオブジェクトの開発リファレンスを確認すると、RGB()数式を使用して色を割り当てる必要があるようです。

http://msdn.microsoft.com/en-us/library/office/bb213182(v=office.12).aspx

ただし、私の Google-Fu は、割り当てで負の色の値を使用できないことを示しています。RBG別の色を選択する必要があると思います。おそらくWinAPIを使用してこれを回避する方法がいくつかありますが、現時点ではそのアプローチをテストすることはできません.

私はあなたの に色相が似ている別の青を選びました-16752384

Sub test()

'## This section converts a long color to its R/G/B components
    Dim col As Long: col = 15773696
    Dim r As Long, g As Long, b As Long
    r = col Mod 256
    g = (col \ 256) Mod 256
    b = (col \ 256 \ 256) Mod 256

'## Your code, with modification for the RGB Formula:
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""BREAK TOP"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Color = RGB(r, g, b) '<-- RGB Formula, here.
        .TintAndShade = 0
    End With


End Sub

アップデート

Selectionこれを試してください。オブジェクトは使用しないでください。

Sub test2()

Dim rng as Range
Dim fc as FormatCondition
Set rng = Range(Selection.Address)

'## This section converts a long color to its R/G/B components
    Dim col As Long: col = 15773696
    Dim r As Long, g As Long, b As Long
    r = col Mod 256
    g = (col \ 256) Mod 256
    b = (col \ 256 \ 256) Mod 256

'## Your code, with modification for the RGB Formula:
    rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""BREAK TOP"""
    rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority

    Set fc = rng.FormatConditions(1)
    fc.Font.Color = RGB(r, g, b) '<-- RGB Formula, here.
    fc.Font.TintAndShade = 0

End Sub
于 2013-07-10T15:38:49.223 に答える