Delphi和Excel.FormatConditions

我在使用早期与Excel 2010绑定的Delphi XE2中设置条件格式时遇到问题

我想重现的macros如下:

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作业不兼容

我究竟做错了什么?

您需要使用Selection作为ExcelRange 。 Excel XP也需要第二个和第三个参数是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;