标题是相当不言自明的,目标是使用Sheet1上的VBA复制工作表2中的单元格的内容,在此示例中为单元格" U6",并将复制的文本粘贴到Sheet1&# 39; s模块。
在这种情况下将文本从工作表复制到模块中的原因(我确信这可以通过几种更有效的方式完成,但为了尝试,我希望坚持这个问题的方法)是Sheet2上的Cell包含一个公式,它将多行VBA语法与由WorkBook中其他功能确定的几个变量一起排列成一行简短的代码行(四行)。在这种情况下,需要将Sheet2中的结果复制到Sheet2的Module中。
对于尝试的方法,由于代码源位于工作表上并且尚未存在于模块中,除非我错了,否则我认为VBIDE不是适用的解决方案。
谢谢。
答案 0 :(得分:0)
所以你可以通过2种方法实现这一点。我在下面写了两个。您可以使用其中一个
Sub Copy()
'Method 1
Sheets("Sheet2").Range("U6").Copy
Destination:=Sheets("Sheet1").Range("A1")
'Method 2
'Copy the data
Sheets("Sheet2").Range("U6").Copy
'Activate the destination worksheet
Sheets("Sheet1").Activate
'Select the target range
Range("A1").Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
答案 1 :(得分:0)
不知道你为什么要这样,但是......
Microsoft Visual Basic For Applications Extensibility 5.3.
Developer
标签,然后点击Macro Security
按钮
在宏设置下,勾选信任访问VBA项目对象模型。使用与此类似的代码:
Sub AddProcedureToModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Dim x As Long
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Sheet1")
Set CodeMod = VBComp.CodeModule
x = 1
With CodeMod
LineNum = .CountOfLines + 1
.InsertLines LineNum, "Public Sub MyProcedureName()"
LineNum = LineNum + 1
Do While Sheet1.Cells(x, 1) <> ""
.InsertLines LineNum, " " & Sheet1.Cells(x, 1)
x = x + 1
LineNum = LineNum + 1
Loop
.InsertLines LineNum, "End Sub"
End With
End Sub
这会将Sheet1列A中的任何内容复制到VBE中 http://www.cpearson.com/excel/vbe.aspx
修改强> 重新阅读您的问题后,此代码会将U6中的值作为注释添加到Sheet1模块中任何代码的底部:
Sub AddCommentModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Sheet1")
Set CodeMod = VBComp.CodeModule
With CodeMod
LineNum = .CountOfLines + 1
.InsertLines LineNum, "'" & Sheet1.Range("U6")
End With
End Sub
注意 - 在这些情况下, Sheet1 是工作表代码,不一定是工作表标签上显示的名称。要使用ThisWorkbook.Worksheets("Sheet1").
而不仅仅是Sheet1
。
编辑2 (因为我等待下午5:30回家):
将此代码添加到Sheet1模块中,只要您键入单元格U6,它就会自动更新注释:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$6" Then
AddCommentModule
End If
End Sub