Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4064|回复: 12

[已解决]为什么这段设置,非得放入with?

[复制链接]
发表于 2014-4-14 15:57 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2014-4-15 15:24 编辑

Sub 宏6()
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
                                      Sheets("user").Range("a1").CurrentRegion, _
                                      Version:=xlPivotTableVersion10).CreatePivotTable _
                                      TableDestination:=Range("a1"), TableName:="abc"
    With ActiveSheet.PivotTables("abc")
        '1)拖入
        '数值
        .AddDataField .PivotFields("签约带宽")
        .AddDataField .PivotFields("签约带宽")
        '行标签
        .PivotFields("县市").Orientation = xlRowField
        .PivotFields("签约带宽").Orientation = xlRowField

        '>>> 放在with中,可以
        '2)设置
        '        With .PivotFields("计数项:签约带宽2")
        '            .Caption = "占比"
        '            .Calculation = xlPercentOfParentRow    '父行的总计的百分比。
        '            .NumberFormat = "0.00%"
        '        End With
        '<<<
        
        
        '>>> 不放在with中,错误
        ActiveSheet.PivotTables("abc").PivotFields("计数项:签约带宽2").Caption = "占比"
        ActiveSheet.PivotTables("abc").PivotFields("计数项:签约带宽2").Calculation = xlPercentOfParentRow
        ActiveSheet.PivotTables("abc").PivotFields("计数项:签约带宽2").NumberFormat = "0.00%"
        '<<<

        
        
        .DataPivotField.Orientation = xlColumnField    '数据字段方向按列
        .PivotFields("签约带宽").PivotItems("10M").Position = 7    '10M移至末尾
        .PivotFields("签约带宽").PivotItems("20M").Position = 7
        .PivotFields("计数项:签约带宽").Caption = "个数"
        .PivotFields("县市").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)    '删除汇总
        .ColumnGrand = False    '不显示列总计
    End With
End Sub 20140408不达标-3.rar (27.48 KB, 下载次数: 2)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-14 17:45 | 显示全部楼层
应该是不一样的,遍历下PivotFields试试。
就以当前已经创建好的透视表。

回复

使用道具 举报

 楼主| 发表于 2014-4-14 19:13 来自手机 | 显示全部楼层
hwc2ycy 发表于 2014-4-14 17:45
应该是不一样的,遍历下PivotFields试试。
就以当前已经创建好的透视表。

谢谢烟花,手机回的,没理解,明天看看
回复

使用道具 举报

发表于 2014-4-14 21:16 | 显示全部楼层
  1. Sub test()
  2.     Dim pf As PivotField
  3.     For Each pf In ActiveSheet.PivotTables("abc").PivotFields
  4.         With pf
  5.             Debug.Print .Name, .Caption
  6.         End With
  7.     Next
  8. End Sub
复制代码
没有代码中的字段名呀。
回复

使用道具 举报

发表于 2014-4-14 21:18 | 显示全部楼层
代码中应该还少加了一个签约宽带字段。
回复

使用道具 举报

 楼主| 发表于 2014-4-15 15:19 | 显示全部楼层
hwc2ycy 发表于 2014-4-14 21:18
代码中应该还少加了一个签约宽带字段。

我是从录制宏中修改来的,挪动部分语句的顺序。

试了4楼,还是不明白。

回复

使用道具 举报

发表于 2014-4-15 15:21 | 显示全部楼层
爱疯 发表于 2014-4-15 15:19
我是从录制宏中修改来的,挪动部分语句的顺序。

试了4楼,还是不明白。

你后来不用with的代码中指定的字段名在数透表中不存在。


回复

使用道具 举报

 楼主| 发表于 2014-4-15 15:42 | 显示全部楼层
hwc2ycy 发表于 2014-4-15 15:21
你后来不用with的代码中指定的字段名在数透表中不存在。




“你后来不用with的代码中指定的字段名”

是"计数项:签约带宽2"吗?
不是的话,是啥呀?


1.rar (526.37 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2014-4-15 16:25 | 显示全部楼层
测试代码中立即窗口已经打印了呀。

点评

唉,自己不理解你的意思  发表于 2014-4-15 16:47
回复

使用道具 举报

发表于 2014-4-15 20:01 | 显示全部楼层
我的意思是你的代码中访问pivotfields集合中时指定的字段名其实在数透表中不存在。
所以才会出错。

点评

我不知道你说的“指定的字段名”是啥  发表于 2014-4-16 08:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 17:12 , Processed in 0.538866 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表