Excel 透视表数据范围的VBA数字格式无效

Excel 透视表数据范围的VBA数字格式无效,excel,vba,Excel,Vba,我的数字看起来仍然像2615233.698,下面的代码将数据透视表的范围格式化为您想要的格式 您可以直接访问数据透视表的范围并使用以下命令修改其格式,而不是使用RangeB43:AJ5000.Select和更高版本的选择: Sub Cost() Dim CurrentPivot As String On Error GoTo OnError Expand CurrentPivot = ActiveSheet.Name ActiveSheet.Pi

我的数字看起来仍然像2615233.698,下面的代码将数据透视表的范围格式化为您想要的格式

您可以直接访问数据透视表的范围并使用以下命令修改其格式,而不是使用RangeB43:AJ5000.Select和更高版本的选择:

Sub Cost()

    Dim CurrentPivot As String

    On Error GoTo OnError

    Expand

    CurrentPivot = ActiveSheet.Name

    ActiveSheet.PivotTables(CurrentPivot).PivotFields("Sum of Hours"). _
        Orientation = xlHidden
    ActiveSheet.PivotTables(CurrentPivot).AddDataField ActiveSheet.PivotTables( _
        CurrentPivot).PivotFields("Cost"), "Sum of Cost", xlSum
    FormatProj
    Zero
    Range("B43:AJ5000").Select
    Selection.NumberFormat = "$#,##0.00;[Red]$#,##0.00"

OnError:
    MsgBox ("Viewing data in $Cost")

    ActiveWorkbook.ShowPivotTableFieldList = False
    Range("B44").Select

End Sub
代码


下面的代码将数据透视表的范围格式化为所需的格式

您可以直接访问数据透视表的范围并使用以下命令修改其格式,而不是使用RangeB43:AJ5000.Select和更高版本的选择:

Sub Cost()

    Dim CurrentPivot As String

    On Error GoTo OnError

    Expand

    CurrentPivot = ActiveSheet.Name

    ActiveSheet.PivotTables(CurrentPivot).PivotFields("Sum of Hours"). _
        Orientation = xlHidden
    ActiveSheet.PivotTables(CurrentPivot).AddDataField ActiveSheet.PivotTables( _
        CurrentPivot).PivotFields("Cost"), "Sum of Cost", xlSum
    FormatProj
    Zero
    Range("B43:AJ5000").Select
    Selection.NumberFormat = "$#,##0.00;[Red]$#,##0.00"

OnError:
    MsgBox ("Viewing data in $Cost")

    ActiveWorkbook.ShowPivotTableFieldList = False
    Range("B44").Select

End Sub
代码


请先阅读,然后再回答你的问题,以改进它。至少包括解释你的代码实际上做了什么,以及你期望它能达到你想要的结果。仅仅发布代码而不询问任何问题是非常糟糕的做法。范围b43:AJ5000应该是数据透视表的范围吗?我同意你的看法。我应该多解释一下。此代码仅显示透视表中的美元成本。是的,这就是数据透视表的流行之处。请先阅读,然后再回答您的问题,以便改进。至少包括解释你的代码实际上做了什么,以及你期望它能达到你想要的结果。仅仅发布代码而不询问任何问题是非常糟糕的做法。范围b43:AJ5000应该是数据透视表的范围吗?我同意你的看法。我应该多解释一下。此代码仅显示透视表中的美元成本。是的,这就是数据透视表的流行之处。提前谢谢,谢谢!这太完美了。FormatProj和Zero是用于格式化数字/颜色等的独立代码@user3860954不客气,请单击我的答案旁边的灰色复选标记将其标记为答案它将变为绿色,您将获得+2分谢谢!这太完美了。FormatProj和Zero是用于设置数字/颜色等格式的独立代码@user3860954不客气,请单击我的答案旁边的灰色复选标记将其标记为答案它将变为绿色,您将获得+2分
Option Explicit

Sub Cost()

Dim CurrentPivot As String
Dim PvtTbl      As PivotTable

On Error GoTo OnError
'Expand ' <-- not sure what does this Sub-routine actually does

CurrentPivot = ActiveSheet.Name

' set the Pivot-Table object
Set PvtTbl = ActiveSheet.PivotTables(CurrentPivot)
With PvtTbl
    .PivotFields("Sum of Hours").Orientation = xlHidden
    .AddDataField .PivotFields("Cost"), "Sum of Cost", xlSum

    'FormatProj ' <-- not sure what does this Sub-routine actually does
    'Zero ' <-- not sure what does this Sub-routine actually does

    .TableRange2.NumberFormat = "$#,##0.00;[Red]$#,##0.00"
End With

OnError:
MsgBox "Viewing data in $Cost"

ActiveWorkbook.ShowPivotTableFieldList = False
Range("B44").Select

End Sub