Excel精英培训网

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

[已解决]怎样修改附件里的程序实现将单元格里的公式一起复制过去?

[复制链接]
发表于 2013-7-27 12:34 | 显示全部楼层 |阅读模式
      附件的表格可以实现当选中每行后面的复选框后,复制A:D的内容到sheet2中,当去掉复选框里的√后,撤销复制。(这是dongqing1998前辈帮忙实现的)
      但现在的问题时,复制的时候,能不能把单元格的公式复制过去呢?后面的VBA该怎么修改?如果需要将单元格的格式(例如行高,字体等等)也复制过去,又需要怎么修改,谢谢 !(或是不用修改程序,直接写一个新程序来满足要求即可)
      求各位大神帮帮忙,非常感谢!
最佳答案
2013-7-27 13:40
读取的时候用formula属性。
  1. Sub copyData()
  2.     Dim mydata, arr(), i%, j%, k%, Total%
  3.     mydata = Range("a2:d" & Range("a65536").End(3).Row).Formula
  4.     Sheet2.Range("a2:d9999").ClearContents
  5. '    For Each ctl In Shapes
  6. '        If InStr(ctl.OLEFormat.Object.Name, "CheckBox") Then
  7. '            Total = Total + 1
  8. '        End If
  9. '    Next
  10.     For i = 1 To 5 'Total
  11.         If ActiveSheet.OLEObjects("CheckBox" & i).Object Then
  12.             k = k + 1
  13.             ReDim Preserve arr(1 To 4, 1 To k)
  14.             For j = 1 To 4
  15.                 arr(j, k) = mydata(i, j)
  16.             Next
  17.         End If
  18.     Next
  19.     If k Then Sheet2.Range("a2").Resize(k, 4).Formula = Application.Transpose(arr)
  20. End Sub
复制代码

用复选框复制.zip

12.29 KB, 下载次数: 14

发表于 2013-7-27 13:40 | 显示全部楼层    本楼为最佳答案   
读取的时候用formula属性。
  1. Sub copyData()
  2.     Dim mydata, arr(), i%, j%, k%, Total%
  3.     mydata = Range("a2:d" & Range("a65536").End(3).Row).Formula
  4.     Sheet2.Range("a2:d9999").ClearContents
  5. '    For Each ctl In Shapes
  6. '        If InStr(ctl.OLEFormat.Object.Name, "CheckBox") Then
  7. '            Total = Total + 1
  8. '        End If
  9. '    Next
  10.     For i = 1 To 5 'Total
  11.         If ActiveSheet.OLEObjects("CheckBox" & i).Object Then
  12.             k = k + 1
  13.             ReDim Preserve arr(1 To 4, 1 To k)
  14.             For j = 1 To 4
  15.                 arr(j, k) = mydata(i, j)
  16.             Next
  17.         End If
  18.     Next
  19.     If k Then Sheet2.Range("a2").Resize(k, 4).Formula = Application.Transpose(arr)
  20. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
qixueli001 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-7-27 13:41 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-7-27 14:24 | 显示全部楼层
hwc2ycy 发表于 2013-7-27 13:41
这样读和写的就是公式。

谢谢版主,但是我想实现复制到sheet2中的内容,如果更改sheet2中的数量后,价格能自动更新啊。这样更改能实现吗?
我试了一下,好像不行,除非再勾选一个复选框或是去掉一个复选框里的√,才能刷新。

对不起,第二页的内容没改过来。现在更改过来了,重新上传一次附件。

用复选框复制2.zip

14.08 KB, 下载次数: 12

回复

使用道具 举报

发表于 2013-7-27 15:06 | 显示全部楼层
3喽正解!~
回复

使用道具 举报

 楼主| 发表于 2013-7-27 15:19 | 显示全部楼层
maicao1986 发表于 2013-7-27 15:06
3喽正解!~

不太明白你的意思。能将附件修改修改传上来吗?我自己尝试了都不行啊。
其实我的想法也很简单,就是对于复制过去的数据,比如要修改数量,我希望在sheet2中直接修改,价格也就跟着变化(如果公式复制过去了,就可以实现)
回复

使用道具 举报

发表于 2013-7-27 15:34 | 显示全部楼层
请见附件。

用复选框复制2.rar

13.73 KB, 下载次数: 11

回复

使用道具 举报

 楼主| 发表于 2013-7-27 15:43 | 显示全部楼层
maicao1986 发表于 2013-7-27 15:34
请见附件。

嗯,谢谢!是我的疏忽,漏了一个关键字。
回复

使用道具 举报

发表于 2013-7-27 17:44 | 显示全部楼层
qixueli001 发表于 2013-7-27 15:43
嗯,谢谢!是我的疏忽,漏了一个关键字。

呵呵,好,我还没有毕业,不能加好友哈~等我经验到100了再加你~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:20 , Processed in 0.759121 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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