【发布时间】:2015-02-12 12:19:20
【问题描述】:
基本上,我有一个动态范围,它将始终位于表格 1 的 A:C 列中。我正在尝试编写一个个人宏来复制动态范围并将其转置到表格 2 上,以允许邮件合并能够将第 1 行读取为邮件合并字段。
目前错误出现在这一行:
Set sourceRange = ActiveSheet.Range(Cells(1, 1), Cells(lastRow, 1))
下面列出了整个代码。我可能遗漏了一个简单的错误,或者甚至可能有一种更简单的方法来实现我想要的结果,但这是我目前想出的。
Sub TrasposeData()
'
' TrasposeData Macro
' Takes the data from sheet one and transpose it to sheet 2 to allow for mail merge compatibility.
Sheet1.Activate
Dim sourceRange As Range
Dim targetRange As Range
Dim lastRow As Long
lastRow = WorksheetFunction.CountA(Range("A:A"))
Set sourceRange = ActiveSheet.Range(Cells(1, 1), Cells(lastRow, 1))
Sheet2.Activate
Set targetRange = ActiveSheet.Cells(1, 1)
Sheet1.Activate
sourceRange.Copy
Sheet2.Activate
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
' Keyboard Shortcut: Ctrl+t
'
Application.Run "PERSONAL.XLSB!TrasposeData"
ActiveWindow.Close
End Sub
任何帮助将不胜感激。
【问题讨论】:
-
介意在问题中添加错误信息吗?可以帮助我们帮助您
-
如果错误没有。是
1004原因是您的A 列完全是空的,因此没有填充单元格,因此lastRow变量结果为0,并且您无法创建以行号0 结尾的范围。 -
错误确实是 1004。我替换了 El Scripto 建议的代码,现在错误是运行时 '424' - Object required 错误。第一次出现此错误:Sheet2.Activate