Vba 设置PowerPoint 2013演示文稿中每个表格的格式

Vba 设置PowerPoint 2013演示文稿中每个表格的格式,vba,powerpoint,Vba,Powerpoint,对于一个研究不周的问题,我深表歉意,但我对VBA的一般知识,尤其是PowerPoint中的VBA知之甚少,而且我一直坚持可能的基本概念 我试图有条件地格式化演示文稿中的所有表格,并根据我的问题进行调整 我提出了以下基本宏: Sub FormatTheTable(oTbl As Table) Dim x As Long Dim y As Long With oTbl For x = 1 To .Rows.Count For y = 1 To .Column

对于一个研究不周的问题,我深表歉意,但我对VBA的一般知识,尤其是PowerPoint中的VBA知之甚少,而且我一直坚持可能的基本概念

我试图有条件地格式化演示文稿中的所有表格,并根据我的问题进行调整

我提出了以下基本宏:

Sub FormatTheTable(oTbl As Table)
    Dim x As Long
    Dim y As Long

    With oTbl
    For x = 1 To .Rows.Count
    For y = 1 To .Columns.Count
        If .Cell(x, y).Shape.TextFrame.HasText Then
            If CDbl(.Cell(x, y).Shape.TextFrame.TextRange.Text) > 0 Then
                .Cell(x, y).Shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
            End If
        End If
    Next    ' Column
    Next    ' Row
    End With    ' otbl
End Sub

Sub DoIT()

    Dim sld As Slide
    Dim shp As Shape

    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasTable Then
                FormatTheTable (shp.Table)
            End If
        Next shp
    Next sld

End Sub
我认为我没有正确调用
FormatTheTable
函数,但我不知道如何正确调用。非常感谢您的帮助

这一行:

FormatTheTable (shp.Table)
应该是:

FormatTheTable shp.Table
因为您调用的不是返回值的Function类型的过程,而是不返回值的Sub类型的过程。如果它是一个函数,那么就可以了:

myValue = FormatTheTable (shp.Table)
这条线看起来也有点奇怪:

If CDbl(.Cell(x, y).Shape.TextFrame.TextRange.Text) > 0 Then
所以你要检查每个单元格是否有文本,如果有文本,你要把文本转换成一个数字?这将引起一个错误。你想在那一行测试什么?

这一行:

FormatTheTable (shp.Table)
应该是:

FormatTheTable shp.Table
因为您调用的不是返回值的Function类型的过程,而是不返回值的Sub类型的过程。如果它是一个函数,那么就可以了:

myValue = FormatTheTable (shp.Table)
这条线看起来也有点奇怪:

If CDbl(.Cell(x, y).Shape.TextFrame.TextRange.Text) > 0 Then

所以你要检查每个单元格是否有文本,如果有文本,你要把文本转换成一个数字?这将引起一个错误。你想在那行测试什么?

在这里标记@JamieG的答案:代码正在检查文本的值是否大于0,但如果文本是字母而不是数字,则会出错。将其更改为:如果CDbl(Val(.Cell(x,y).Shape.TextFrame.TextRange.Text))>0,则在这里标记@JamieG的答案:代码正在检查文本值是否大于0,但如果文本是字母而不是数字,则会出错。将其更改为:如果CDbl(Val(.Cell(x,y).Shape.TextFrame.TextRange.Text))大于0,则