簡體   English   中英

Excel 2013 VBA - 以編程方式從工作表2上的一個單元格復制文本,粘貼到Sheet1模塊

[英]Excel 2013 VBA - Programmatically Copy text from one Cell on Sheet 2, Paste into Sheet1 Module

標題是相當不言自明的,目標是使用Sheet1上的VBA復制工作表2中單元格的內容,在本例中為單元格“U6”,並將復制的文本粘貼到Sheet1的模塊中。

在這種情況下將文本從工作表復制到模塊的原因( 我確信這可以通過幾種更有效的方式完成,但為了嘗試,我希望堅持這個方法來解決這個問題 )是Sheet2上的Cell包含一個公式,該公式將多行VBA語法與由WorkBook中其他功能確定的多個變量一起排列成一行簡短的代碼行(四行)。 在此方案中,需要將Sheet2中的結果復制到Sheet2的Module中。

對於嘗試的方法,因為代碼源在工作表上並且還沒有存在於模塊中,除非我弄錯了,我不相信VBIDE是適用的解決方案。

謝謝。

所以你可以通過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

不知道為什么你想要,但.....

  • 在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列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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM