VBA - 从已关闭文件粘贴复制到摘要表上的下一个可用行

时间:2014-11-12 20:59:25

标签: excel vba excel-vba

这是我的第一篇文章。如果我在这里做错了,请原谅我。我很乐意纠正任何错误。我发现这个网站非常有价值,因为我是vba领域的婴儿。请耐心等待。

我是VBA的超级新秀。我正在学习,但是花了很多时间在这上面。我在网上找到了一些信息,但却无法将它们放在一起。我已经学会了如何制作一个vba宏,我可以选择一个文件,然后运行其他宏。 我正在使用Excel 2013。 我每个星期(有时候在月底更多)完成工作时间和我工作的项目的时间表。当我出去的时候,我还在那张表格中加入了一个代码。我想将三个部分复制到摘要表中。

  1. Cell D1。此单元格始终具有旁边的日期。我想把它复制到第一行的单元格中。
  2. 单元格F3-L3是放置代码的单元格。我想把它复制到第一行的第二个单元格中。
  3. 下一个单元格区域是最后一个单元格,其中包含F-L列中的数据。这些因我们每次都有不同的工作行数而变化,但总是在F-L列中。我想把它复制到第一行中相应单元格下面的第二行。 对于下一个文件,我想将其复制到摘要中的下一个可用行。
  4. 我想复制这些数据,以便我可以计算休假日,病假等。 我知道我要求很多,但非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我给你这个例子,你仍然需要修改......

Option Explicit 'forces Programmer to declare variables

Sub Button_To_Copy () 'link this to a button or other action that launchs the sub
Dim Range_to_Copy as Range
Dim Range_Destination as Range

Dim Sheet_Data as worksheet 'sheet from where we pull the data
Dim Sheet_Destination as Worksheet' Summary Sheet

set Sheet_Data = Thisworkbook.Sheets("Sheet1") 'you might have to rename the sheetname accordingly to its name.
set Sheet_Destination = Thisworkbook.sheets("Summary") ' wild guess, correct to your summary sheet name

Set Range_to_Copy = Sheet_Data.Range("D1")
Set Range_Destination = Sheet_Destination.range("A1")

Range_to_Copy.Copy Range_Destination  'this copies from range A to B (basically A.copy B), but i changed variable names to make it easier...

'more code, copies

'you can simplify without variables like this:
'Sheets("Sheet1").Range("D1").Copy Sheets("Summary).Range("A1")          <=====    does the same as the above coding

End Sub

请注意,我从未使用过激活或选择,因为宏录音机会一直使用不当,会给初学者带来不良习惯。

此外,通过引用像“D1”这样的硬单元位置,代码不是动态的,如果添加更多数据,则必须更改sub,所以使用它作为开始可能