如何获得一个负格的实际颜色?

我的一些单元格格式为#,##0;[Red](#,##0) ,使负数显示为红色。 我想将内容和格式复制到PowerPoint中。 如何识别单元格显示的颜色,以便我可以复制可见的外观? 我不想重新实现parsing格式的逻辑,如果我不需要,也可以做出否定的决定,因为不是所有的单元格都将被格式化。

如果我不能通过在VBA中明确设置颜色来实现,是否可以使用复制和粘贴方法将Excel中的单元格复制到PowerPoint中表格中的单元格中? 其实这会比做手工更好 – 我已经尝试过,但我不能在什么对象的嵌套级别做粘贴。

我发现如何粘贴Excel范围作为一个新表,但没有粘贴单个单元格与格式化到现有的PowerPoint表引用大量的参考。 在TextRange级别粘贴不会粘贴颜色,但会粘贴其他设置(如粗体)。

是否有可能使用复制和粘贴方法将Excel中的单元格复制到PowerPoint中的表格中的单元格?

我不认为史蒂夫的build议适用于自定义数字格式,就像你所做的一样。 无论如何,当我查询单元格的.Font.ColorIndex属性(例如)时,返回值是1 ,即使数字是负数,它显示为红色 ,应该会产生3

不parsing格式条件,我不知道这是可能的。 数字格式规则似乎不转移到PowerPoint,无论我尝试了什么。

但是,这可能是一个可接受的解决scheme。 将您的号码格式更改为:

#,##0;(#,##0)

然后,如果值为负,请使用条件格式规则使单元格的文本变为红色,而不是使用自定义格式来执行该颜色。

给出的单个单元格范例的示例:

 Sub Test() Dim r As Range Dim ppt As Object Dim pres As Object Dim sld As Object Dim tbl As Object Dim tblCell As Object Set r = [A3] Set ppt = CreateObject("PowerPoint.Application") Set pres = ppt.Presentations.Open("c:\presentation.pptx") Set sld = pres.Slides(1) Set tbl = sld.Shapes(1) 'Table in PowerPoint Set tblCell = tbl.Table.Cell(1, 1).Shape 'Cell/shape you paste in to r.Copy tblCell.Select ppt.CommandBars.ExecuteMso "PasteSourceFormatting" End Sub 

或者,强制单元格的颜色为红色:

 Set r = [A3] If r.Value < 0 Then r.Font.ColorIndex = 3 Else r.Font.ColorIndex = 1 End If