Excel 2013 VBA-以编程方式从工作表2的一个单元格复制文本,粘贴到工作表1模块中

Excel 2013 VBA-以编程方式从工作表2的一个单元格复制文本,粘贴到工作表1模块中,vba,excel,Vba,Excel,标题是不言自明的,目标是使用Sheet1上的VBA复制工作表2中单元格的内容,在本例中为单元格“U6”,并将复制的文本粘贴到Sheet1的模块中 在这种情况下,将工作表中的文本复制到模块中的原因(我相信这可以通过几种可能更有效的方法来实现,但为了尝试,我希望在这个问题上坚持使用这种方法)Sheet2上的单元格包含一个公式,该公式将VBA语法的多行以及工作簿中其他功能确定的多个变量一起排列成一个简短的代码行(四行)。在这种情况下,需要将Sheet2的结果复制到Sheet2的模块中 对于尝试的方法,

标题是不言自明的,目标是使用Sheet1上的VBA复制工作表2中单元格的内容,在本例中为单元格“U6”,并将复制的文本粘贴到Sheet1的模块中

在这种情况下,将工作表中的文本复制到模块中的原因(我相信这可以通过几种可能更有效的方法来实现,但为了尝试,我希望在这个问题上坚持使用这种方法)Sheet2上的单元格包含一个公式,该公式将VBA语法的多行以及工作簿中其他功能确定的多个变量一起排列成一个简短的代码行(四行)。在这种情况下,需要将Sheet2的结果复制到Sheet2的模块中

对于尝试的方法,由于代码源位于工作表上,并且还不在模块中,除非我弄错了,否则我不认为VBIDE是一个适用的解决方案


谢谢。

因此您可以通过两种方法实现这一点。我在下面都写了。你可以用这两种方法中的任何一种

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

因此,您可以通过两种方法实现这一点。我在下面都写了。你可以用这两种方法中的任何一种

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

不知道你为什么想,但是

  • 在VBE中添加对Microsoft Visual Basic For Applications Extensibility 5.3的引用。
  • 启用对VBA项目的编程访问。
    在Excel 2010中,选择
    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是图纸代号,而不一定是图纸选项卡上显示的名称。要使用它,请使用此工作簿。工作表(“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

不知道你为什么想,但是

  • 在VBE中添加对Microsoft Visual Basic For Applications Extensibility 5.3的引用。
  • 启用对VBA项目的编程访问。
    在Excel 2010中,选择
    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是图纸代号,而不一定是图纸选项卡上显示的名称。要使用它,请使用此工作簿。工作表(“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

这些都是很好的建议,感谢您花时间提供两种可能的方法来实现这一结果。但是,这两种方法都将数据从一个工作表粘贴到另一个工作表中,目的是将数据从一个工作表复制并粘贴到另一个工作表的Excel对象或代码名中(对于不熟悉该术语的人,这是输入VBA代码的地方)。谢谢。这些都是很好的建议,感谢您花时间提供两种可能的方法来实现这一结果。但是,这两种方法都将数据从一个工作表粘贴到另一个工作表中,目的是将数据从一个工作表复制并粘贴到另一个工作表的Excel对象或代码名中(对于不熟悉该术语的人,这是输入VBA代码的地方)。非常感谢。