![](/img/trans.png)
[英]VBA Excel 2010 - How to assign a macro to a command button that was made with a macro
[英]How to insert a vba code in private macro to command button
我有一个代码,它涉及从源复制列数据并粘贴到新工作簿中。 当我像这样通过工作表中的活动 x 命令按钮运行此代码时,出现运行时错误。 有人告诉我为工作表创建私有模块并在那里复制粘贴代码。 在这样的模块中
但是当我保存它并单击工作表上的活动 x 按钮时,没有任何反应。 如果我用 go 调试 window 并按 F5 或 F8,它将完美运行。 我的错误是什么? 如何使模块内的代码附加到命令按钮?
这是我的代码:
Dim lastrow As Long
Dim wksSource As Worksheet, wksDest As Worksheet
Dim source1 As Range, target1 As Range, source2 As Range
Dim target2 As Range
Workbooks.Open Filename:="C:\Users\catia\Downloads\Raw Data.xlsx"
Set wksSource = Workbooks("2020 Tracker.xlsm").Worksheets("Sheet3")
Set wksDest = Workbooks("Raw Data.xlsx").Worksheets("Sheet1")
lastrow = wksSource.Cells(Rows.Count, 1).End(xlUp).row
Workbooks("Raw Data.xlsx").Worksheets("Sheet1").Rows("3:" & Rows.Count).ClearContents
Set source1 = wksSource.Range("A2:A" & lastrow)
Set source2 = wksSource.Range("C2:C" & lastrow)
Set target1 = wksDest.Range(Range("B3"), Range("B3").End(xlDown))
Set target2 = wksDest.Range(Range("E3"), Range("E3").End(xlDown))
source1.Copy: target1.PasteSpecial Paste:=xlPasteValues
source2.Copy: target2.PasteSpecial Paste:=xlPasteValues
wksDest.Range("A2").Select
Workbooks("Raw Data.xlsx").Save
Workbooks("Raw Data.xlsx").Close
您需要使用它们所在的工作表来限定您的Range
调用。
改变
Set target1 = wksDest.Range(Range("B3"), Range("B3").End(xlDown))
Set target2 = wksDest.Range(Range("E3"), Range("E3").End(xlDown))
至
Set target1 = wksDest.Range(wksDest.Range("B3"), wksDest.Range("B3").End(xlDown))
Set target2 = wksDest.Range(wksDest.Range("E3"), wksDest.Range("E3").End(xlDown))
或者使用With...End With
块:
With wksDest
Set target1 = .Range(.Range("B3"), .Range("B3").End(xlDown))
Set target2 = .Range(.Range("E3"), .Range("E3").End(xlDown))
End With
或者由于您粘贴特殊,您可以保留target1
和target2
作为范围的第一个单元格:
Set target1 = wksDest.Range("B3")
Set target2 = wksDest.Range("E3")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.