复制和复制的基本VBA代码;将数据粘贴到其他工作表
我对从头开始创建VBA代码一无所知,我只通过记录我的操作来完成。然而,录制功能似乎无法实现我希望在报告中实现的功能。我想请您帮助我如何将特定数据从“主表单”表复制并粘贴到“数据库”表 我想从“主窗体”工作表(e3:e7、h3:h7、k3:k7、i12:i16、i18:i21、i23)复制数据,并在单击“主窗体”工作表中的“保存”按钮时将其粘贴到我的“数据库”工作表(a2:y2)中。每次单击“保存”按钮时,必须重复此操作,并且新数据集必须转到“数据库”工作表中的下一个空行 我希望有人能帮我。不幸的是,我不知道如何将文件附加到这里复制和复制的基本VBA代码;将数据粘贴到其他工作表,vba,Vba,我对从头开始创建VBA代码一无所知,我只通过记录我的操作来完成。然而,录制功能似乎无法实现我希望在报告中实现的功能。我想请您帮助我如何将特定数据从“主表单”表复制并粘贴到“数据库”表 我想从“主窗体”工作表(e3:e7、h3:h7、k3:k7、i12:i16、i18:i21、i23)复制数据,并在单击“主窗体”工作表中的“保存”按钮时将其粘贴到我的“数据库”工作表(a2:y2)中。每次单击“保存”按钮时,必须重复此操作,并且新数据集必须转到“数据库”工作表中的下一个空行 我希望有人能帮我。不幸的
谢谢。您不能对非连续范围使用
.Copy
方法
然而,大多数时候,人们想要“复制”某些东西,他们真正关心的是传递值,这可以不用复制/粘贴过程来完成(如果您还需要复制格式等,这可以像下面一样完成)
将其放在工作簿代码模块中,而不是普通代码模块中,它必须放在工作簿代码模块中。每次在工作簿上执行保存
操作时,都会调用一个子例程TransferValues
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.Run "TransferValues"
End Sub
把它放在普通代码模块中
修订版
由于范围不连续,我不得不做一些更改,我们需要遍历范围的.area
,然后遍历每个区域中的单个单元格
Private Sub TransferValues()
Dim wsMain As Worksheet: Set wsMain = Sheets("Main Form")
Dim wsData As Worksheet: Set wsData = Sheets("Database")
Dim rngToCopy As Range: Set rngToCopy = wsMain.Range("e3:e7,h3:h7,k3:k7,i12:i16,i18:i21,i23")
Dim c As Long
Dim ar As Range
Dim cl As Range
Dim lastRow As Long
Dim rngDestination As Range
'Get the last row in Database sheet:
lastRow = Application.WorksheetFunction.CountA(wsData.Range("A:A"))
Set rngDestination = wsData.Cells(lastRow + 1, 1).Resize(1, 25).Offset(1, 0)
For Each ar In rngToCopy.Areas
For Each cl In ar
c = c + 1
'I used this next line for testing:
' rngDestination.Cells(c).Value = cl.Address
rngDestination.Cells(c).Value = cl.Value
Next
Next
End Sub
你有机会测试我的建议了吗?嗨,大卫,谢谢你关注我的问题。然而,在我按照你给我的指示将代码粘贴到哪里之后,我注意到它只复制了单元格e3:e7中的代码……我该怎么做才能让它复制其他单元格中的所有数据?@user2664641我在上面做了一个修订。问题是
.Cells.Count
在非连续范围内的行为异常。使用非连续范围有点棘手,但我认为如果我们越过范围区域
,然后是每个区域内的单元格
,应该可以解决这个问题。嗨,大卫,我尝试了修改后的代码,但突然出现了这个错误,“无法运行宏”Dummyfile1.xlsm!CopyPaste。“:(您没有正确复制我的代码,因为在任何地方都没有对名为“CopyPaste”的宏的引用。我做了另一个修订(工作表名称)所以请再试一次,但要小心使用与我展示的完全相同的代码。我复制代码的方式与复制第一个代码的方式相同。我不确定这次为什么不起作用。我真的很抱歉。