使用以编程方式添加的macros从工作表写入另一个

我实际上是以编程方式创build工作表,并通过编程方式向与这些工作表关联的macros添加button。 我想要做的是,当我点击button时,包含该button的工作表的内容被复制到另一个工作表。

实际上有两件事让我感到困惑: 首先,我不明白与button关联的macros是否位于创build工作表的文件中,或者位于创build的工作表本身中。

这里是我创build的代码添加一个关联macros的button:

With newWorkBook.Worksheets(1).Buttons .Add 350, 75, 173.25, 41.25 .OnAction = "'" & ThisWorkbook.FullName & "'!export_Click" .Caption = "Exporter la fiche" End With newWorkBook.Worksheets("Feuil1").Name = "Valeurs" 

checkPVC_Click Sub位于用于生成工作表的Excel文件中的模块中。

其次 ,在应该将工作表的内容复制到另一个的macros中,我不知道如何在代码中对两个工作表(源和目标)进行不同的引用。

在下面的代码中:

 Dim newWorkBook As Workbook Dim createdSheetColumnsTab(100) As String Dim col As Integer col = Cells(1, 8).Value Set newWorkBook1 = Workbooks.Add newWorkBook1.Worksheets("Feuil1").Cells(1, 1).Value = "Stat" newWorkBook1.Worksheets("Feuil1").Cells(2, 1) = ActiveWorkbook.Worksheets("Valeurs").Cells(12, 1) 

在这里col = Cells(1, 8).Value我访问工作表的内容,我想要复制的内容,并在行newWorkBook1.Worksheets("Feuil1").Cells(1, 1).Value = "Stat"我访问“目标”工作表的内容,我不知道如何引用第一个工作表的内容,在下面的代码中复制内容。

我希望我很清楚,如果有必要,我可以增加更多的精度,抱歉,我不掌握英语,所以我很难解释这个问题。

您可以在原始工作簿中保留Sub checkPVC_Click 。 只要确保你给出了具有该macros的文件的完整path和名称。 例如。 请确保您正在运行此macros的文件至less保存一次。

 Sub Sample() Dim NewWorkbook As Workbook Set NewWorkbook = Workbooks.Add With NewWorkbook.Worksheets(1).Buttons .Add 350, 15, 173.25, 41.25 .OnAction = "'" & ThisWorkbook.FullName & "'!checkPVC_Click" End With End Sub Sub checkPVC_Click() MsgBox "a" End Sub 

关于你的第二个问题,你需要完全限定Cells对象,以便它知道你指的是哪个单元格

ThisWorkbook将引用代码所在的工作簿中的单元格。

Activeworkbook将参考当前活动的工作簿中的单元格。

编辑 :从评论后续。 这是你正在尝试?

 Sub Sample() Dim newWorkBook As Workbook Dim ws As Worksheet Set newWorkBook = Workbooks.Add Set ws = newWorkBook.Sheets(1) ws.Name = "Valeurs" With ws.Buttons .Add 350, 15, 173.25, 41.25 .OnAction = "'" & ThisWorkbook.FullName & "'!checkPVC_Click" End With End Sub Sub checkPVC_Click() Dim OldWorkbook As Workbook, newWorkBook As Workbook Dim createdSheetColumnsTab(100) As String Set OldWorkbook = ActiveWorkbook Set newWorkBook1 = Workbooks.Add newWorkBook1.Worksheets("Feuil1").Cells(1, 1).Value = "Stat" newWorkBook1.Worksheets("Feuil1").Cells(2, 1) = OldWorkbook.Worksheets("Valeurs").Cells(12, 1) End Sub 

要访问包含macros的工作簿的第一个工作表的内容,您需要使用:

 Thisworkbook.sheets(1).range("a1:a100") ' range as an example you can input anything 

希望它有帮助。