【问题标题】:Copy range then paste values to a different section of the sheet then back to the original range复制范围,然后将值粘贴到工作表的不同部分,然后返回到原始范围
【发布时间】:2018-03-22 15:47:15
【问题描述】:

通过单击一个按钮,我试图获取一系列数据,粘贴值,删除原始数据范围,然后将值移回原始位置。像这样的...

ws.Range("A11:AD400").Copy
ws.Range("A511:AD900").PasteSpecial xlPasteValues
ws.Range("A11:AD400").Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents
ws.Range("A511:AD900").Copy
ws.Range("A11:AD400").PasteSpecial xlPasteValues
ws.Range("A511:AD900").Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents

【问题讨论】:

  • 为什么是更好的问题?你的代码有什么问题?
  • @J_P 我真的只是在寻找一种干净的方式来执行任务。在我看来,这种方法既慢又笨重。
  • 我不明白你想通过复制范围、删除范围、将其值复制回同一个地方来实现什么?你用这个无法实现的目标实现了什么?
  • @QHarr 我目前有用户粘贴到工作表中,它弄乱了格式。我的想法是有一个修复按钮,可以取消保护工作表,复制所有值并将值粘贴回范围,然后再次保护工作表。
  • 为什么不只使用应用正确格式进行修复的代码?

标签: excel copy paste


【解决方案1】:

如果实际上您只想恢复正确的格式,请将宏记录为目标范围 (ws.Range("A11:AD400")) 的格式。然后,该代码可以重新用作您的修复代码,您可以运行该代码以在将来根据需要重新格式化范围(例如,您可以链接到一个按钮)。

当只有格式很重要时,比复制粘贴再复制回来要有效得多。

学习使用宏记录器:

  1. http://www.excel-easy.com/vba/examples/macro-recorder.html
  2. http://www.contextures.com/excel-macro-record-test.html

范围格式介绍:

  1. http://www.excelhowto.com/macros/formatting-a-range-of-cells-in-excel-vba/

【讨论】:

  • 这太棒了!谢谢@QHarr。有没有办法以这种方式恢复条件格式?
  • www.contextures.com/xlCondFormat04.html , stackoverflow.com/questions/13661965/…
  • 有意义吗?
  • 是的,感谢您的帮助,我最终使用它来重置已知范围内的格式。 ws.Range("A398:AD398").Copy ws.Range("A11:AD399").PasteSpecial xlPasteFormats
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多