Excel精英培训网

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

[已解决]求助,麻烦VBA高手修改这段代码

[复制链接]
发表于 2011-12-29 15:13 | 显示全部楼层 |阅读模式
本帖最后由 菜鸟锐 于 2011-12-29 15:14 编辑

求高手帮忙修改一下这段代码,标红的代码把“成绩”这个表中的C9:T111区域的单元格导出,
导出到新的工作簿中的sheet1 并从a1出开始显示。sheet1被命名为成绩副本
本段代码可以正常运行,可以把“成绩”这个表中的C9:T111的格式包括公式也全部导出来。但由于生产的新表是从a1处开始,就会出现公式移位的现象,请高手帮忙优化一下红色部分的代码,导出时公式不要,显示数值结果(格式要保留)。感激!

Sub test()
    Dim x As Workbook, y As Workbook
    Set x = ThisWorkbook
    Set y = Workbooks.Add

    x.Sheets("成绩").Range("c9:t111").Copy y.Sheets("sheet1").Range("a1")
    y.Activate
    Sheets("sheet1").Activate
    Sheets("sheet1").Name = "成绩副本"


   ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "导出全部绩效.xls", xlWorkbookNormal
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
   
    '返回按钮工作表
    x.Activate
    Sheets("首页").Activate
End Sub

最佳答案
2011-12-29 18:43
改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).PasteSpecial Paste:=xlPasteValues
  y.Sheets("sheet1").Range("a1").Resize(103, 18).PasteSpecial Paste:=xlPasteFormats
 楼主| 发表于 2011-12-29 15:54 | 显示全部楼层
没有高手会吗?自己顶一下。请高手帮忙指点一下谢谢
回复

使用道具 举报

发表于 2011-12-29 16:13 | 显示全部楼层
笨办法:
将  x.Sheets("成绩").Range("c9:t111").Copy y.Sheets("sheet1").Range("a1")
改成:
    R = Range("c9:t111").Rows.Count
    C = Range("c9:t111").Columns.Count
    y.Sheets("sheet1").Range("a1").Resize(R, C) = x.Sheets("成绩").Range("c9:t111").Value
回复

使用道具 举报

发表于 2011-12-29 16:17 | 显示全部楼层
或改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).PasteSpecial Paste:=xlPasteValues
回复

使用道具 举报

 楼主| 发表于 2011-12-29 16:45 | 显示全部楼层
zjdh 发表于 2011-12-29 16:17
或改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).P ...

感谢,我试试。谢谢啦!!
回复

使用道具 举报

 楼主| 发表于 2011-12-29 17:37 | 显示全部楼层
zjdh 发表于 2011-12-29 16:17
或改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).P ...

公式是没有了,可是格式也没有咯~~~~我想保留格式,谢谢。
回复

使用道具 举报

发表于 2011-12-29 18:43 | 显示全部楼层    本楼为最佳答案   
改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).PasteSpecial Paste:=xlPasteValues
  y.Sheets("sheet1").Range("a1").Resize(103, 18).PasteSpecial Paste:=xlPasteFormats
回复

使用道具 举报

 楼主| 发表于 2011-12-29 21:00 | 显示全部楼层
zjdh 发表于 2011-12-29 18:43
改成
  x.Sheets("成绩").Range("c9:t111").Copy
  y.Sheets("sheet1").Range("a1").Resize(103, 18).Pas ...

很给力!!谢谢!!
回复

使用道具 举报

发表于 2011-12-31 12:33 | 显示全部楼层
你都开始会VBA了啊
回复

使用道具 举报

 楼主| 发表于 2011-12-31 13:37 | 显示全部楼层
201228 发表于 2011-12-31 12:33
你都开始会VBA了啊

学习一下。也很菜~~~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 13:01 , Processed in 0.377857 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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