【发布时间】:2015-08-24 17:09:17
【问题描述】:
我有一个子,我调用它作为另一个子的一部分。当它自己运行时,它工作正常,但是当它从另一个 sub 调用时,它并不能完全正确地工作。主子保存默认值然后:
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Call FillInCoding
这是不工作的子,我认为可能是这种编码是复制和粘贴特殊:
Sub FillInCoding()
'clears the area to be pasted into
Worksheets(1).Range("A11:G98567").ClearContents
Dim JE As Worksheet
Dim Sheet1 As Worksheet
Dim lastRow As Long
Set JE = ThisWorkbook.Worksheets(1)
Set Sheet1 = ThisWorkbook.Worksheets(2)
lastRow = Sheet1.Range("R65536").End(xlUp).Row
'This part is copying the values of the ranges from worksheet #2 into the worksheet #1 destination
Worksheets(2).Range("AM2:AM" & lastRow).Copy
Worksheets(1).Range("A11:A" & lastRow).PasteSpecial xlPasteValues
Worksheets(2).Range("AN2:AN" & lastRow).Copy
Worksheets(1).Range("B11:B" & lastRow).PasteSpecial xlPasteValues
Worksheets(2).Range("R2:R" & lastRow).Copy
Worksheets(1).Range("E11:E" & lastRow).PasteSpecial xlPasteValues
Worksheets(2).Range("AO2:AO" & lastRow).Copy
Worksheets(1).Range("G11:G" & lastRow).PasteSpecial xlPasteValues
End Sub
我尝试设置范围,但它粘贴的是单元格公式而不是值,所以这是我可以让它做我需要做的事情的唯一简单方法。归根结底,我需要将您在工作表 2 上看到的不同范围内的内容(每次运行时可能是不同的长度)作为值复制到工作表 1 中。
如果有人知道如何在最后一行发生变化时轻松地将不同工作表上的范围设置为等于不同的值,并且它们位于不同工作表上的不同位置,那将是理想的。
例如在第二张纸上它可能是
A1="XYZ"
B1="100000"
C1="52.00"
D1="office supplies"
A2="YZA"
B2="150000"
C2="-52.00"
D2="office supplies"
但在第一张表中,我们需要从 A11:12、B11:12、C11:12、D11:12 等开始粘贴这些值(尽管第二天可能有 40 行而不是 2 行)。
【问题讨论】:
-
sheet1 上的数据如何变化?它是自动更新的,还是真的有人在 Excel 中更改数据?
-
@BruceWayne 它是由其他公式完成的(基本上有一个报告转储,然后是宏将其格式化为它需要在工作表 2 上的状态,然后我希望将其复制到不同的工作表作为值)。