首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

vba 报错,该怎么处理

2012-02-21 
vba 报错我有个名为PIVO_DETAIL的SHEET。它有个名为PIVO_refresh的方法,如下:Sub PIVO_refresh()PIVO_DETAI

vba 报错
我有个名为PIVO_DETAIL的SHEET。
它有个名为PIVO_refresh的方法,如下:
Sub PIVO_refresh()
   
  PIVO_DETAIL.Select
  ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
   
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("AAAA")
  .PivotItems("#N/A").Visible = False
  End With
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("BBB")
  .PivotItems("#N/A").Visible = False
  End With
   
  Range("A5").Select
  Selection.sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin
  
  Range("B5").Select
  Selection.sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin
   
End Sub
我在其他SHEET里调用PIVO_DETAIL。PIVO_refresh,老是报错。
经过单步调试,发现是PIVO_refresh里面的
 Selection.sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin
这一句执行完后就报错
报的错是 1004错误
显示错误信息是: Application-defined or object-defined error.


 Range("A5").Select
  Selection.sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin
  
  Range("B5").Select
  Selection.sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin
这两句注释掉就不报错了。
请高手们帮忙看看到底是为什么?该怎么改???多谢了。

[解决办法]
没附件,不好猜

可能是Range("B5")没指定哪个表,或是排序后会改变透视表的格式
[解决办法]
ActiveSheet.Range("A5").Select
ActiveSheet.Range("B5").Select
[解决办法]
估计是selection对象 没指定好

不同的表要处理的话 最好先加上这么一句

VB code
   Sheets("新表").Activate   Range("A5").Select
[解决办法]
在程序中。99%的地方可以把.Select 去掉

Range("A5").sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _ 
Orientation:=xlTopToBottom, SortMethod:=xlPinYin 

有些东西不一定要选择上才可以操作!

热点排行