4

Excel2010でアーリーバインディングを使用してDelphiXE2から条件付き書式を設定する際に問題が発生しました

私が再現しようとしているマクロは次のとおりです。

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
    Formula1:="=6"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

Selction.FormatConditions(1)仕事に相当するものにアクセスできないように見えるかもしれないので試してみてください

私が到達した最も近いものは、次のコードです。

XR := Xlapp.Range(...) 
XR.FormatConditions.Delete;
XR.FormatConditions.Add(xlCellValue, xlGreater, '=6', EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

どちらが機能しますか。色を定義しようとすると問題が発生します

FC := XR.FormatConditions[1];
FC.SetFirstPriority;
with FC.Interior do
begin
   PatternColorIndex := xlAutomatic;
   ThemeColor := xlThemeColorAccent6;
end;

ただし、これにより、XR.FormatConditions(1)はIDispatchであり、したがってFormatConditionの割り当てと互換性がないことがわかります。

私は何が間違っているのですか?

4

1 に答える 1

4

Selectionとして使用する必要がありますExcelRange。Excel XPでは、2番目と3番目のパラメーターもである必要があるOleVariantため、これは機能するはずです(とにかくコンパイルされます)。

var
  Sel: ExcelRange;
  Op, Formula: OleVariant;
  Condition: FormatCondition;
begin
  Sel := ExcelApplication1.Selection[1] as ExcelRange;
  Op := xlGreater;
  Formula := '=6';
  Sel.FormatConditions.Add(xlCellValue, Op, Formula, EmptyParam);
  Condition := Sel.FormatConditions[1] as FormatCondition;
  Condition.Interior.PatternColorIndex := xlAutomatic;
  // Do whatever else
end;
于 2013-02-07T18:14:22.400 に答える