使用VBA和表单按钮在Excel 2013中复制和粘贴
我希望有人能帮助我,我需要Excel 2013中的一个按钮来执行以下命令:使用VBA和表单按钮在Excel 2013中复制和粘贴,vba,excel,copy-paste,Vba,Excel,Copy Paste,我希望有人能帮助我,我需要Excel 2013中的一个按钮来执行以下命令: 在“表1”中,复制范围“A2:I2” 查找A2中的值以确定适当的工作表,该工作表将被激活,复制的范围将粘贴到B:J范围内的下一个可用行中 粘贴数据后,激活工作表粘贴行A列中单元格的值将返回给用户 例如: 当我输入Sheet1.A2“技术报告”并单击我的按钮时,它将复制Sheet1.A2:I2,然后查找名为“TEC”的工作表,激活它,并将数据粘贴到TEC.B2:I2中 在我的“TEC”表中,a列中有一个预先存在的数字列表。
我知道这是一个很大的要求,但我一直试图使用没有结果的代码位,我不是一个非常先进的VBA用户,所以这里提供的任何帮助将非常感谢 迄今为止的代码是:
子按钮()
Application.CutCopyMode=False
图纸(“图纸1”)。范围(“A2:I2”)。复制“复制”文件数据
如果图纸(“图纸1”).范围(“A2”)=技术报告,则
表格(“TEC”)。激活“检查文件类型”并激活相关文件工作表
其他表格(“表格1”)。范围(“A2”)=“工程协调备忘录”
工作表(“ECM”)。激活
其他图纸(“图纸1”)。范围(“A2”)=“关键设计审查”,然后
工作表(“CDR”)。激活
其他图纸(“图纸1”)。范围(“A2”)=“初步设计审查”,然后
工作表(“PDR”)。激活
其他表格(“表格1”)。范围(“A2”)=“通过相似性和分析进行鉴定”,然后
工作表(“QSR”)。激活
其他表(“表1”)。范围(“A2”)=“通过试验程序进行鉴定”,然后
工作表(“QTP”)。激活
其他表格(“表格1”)。范围(“A2”)=“可靠性报告”
工作表(“REL”)。激活
其他表(“表1”)。范围(“A2”)=“规范符合性表”
工作表(“SCT”)。激活
如果结束
将sourceCol设置为整数,将rowCount设置为整数,将currentRow设置为整数’代码以选择列B中的下一个空单元格
将currentRowValue设置为字符串
sourceCol=2'列B的值为2
rowCount=单元格(Rows.Count,sourceCol).End(xlUp).Row
'对于每一行,找到第一个空白单元格并选择它
对于currentRow=1到rowCount
currentRowValue=单元格(currentRow,sourceCol).Value
如果为空(currentRowValue)或currentRowValue=“”,则
单元格(currentRow,sourceCol)。选择
退出
如果结束
下一个
粘贴
ActiveCell.Offset(ColumnCoffset:=-1)。选择
复制
工作表(“工作表1”)。激活
板材(“板材1”)。范围(“A5”)。粘贴
End Sub
一般来说,我不喜欢在VBA中使用复制/粘贴,而是为范围赋值。这样你就不必在床单之间来回移动。假设要将数据移动到的每个工作表中都有一个标题行(因为rowCount永远不会返回为零),那么下面的操作就可以了
一般来说,你不会让别人在这个网站上为你写代码。尝试添加到目前为止您已经尝试过的代码,并询问如何改进它的具体问题。嗨@TheEngineer,到目前为止,这就是我得到的:Sub Save_Click()Sheets(“sheet1”).Range(“A2:I2”).Copy IfSheet1.A2=“Technical Report”ActiveSheet.Paste Destination:=Sheets(“TEC”).Range(B,10)Sheets(“sheet3”).Range(“B10:I10”).Paste将该代码作为编辑添加到问题中。在注释中阅读代码会伤到人的头。@Matt已将其添加到注释中。当前正在获取“需要对象”消息。
Sub button()
Dim sheetName As String
If Sheets("Sheet1").Range("A2") = "Technical Report" Then
sheetName = "TEC" ' check for type of document and activate relevant document worksheet
ElseIf Sheets("Sheet1").Range("A2") = "Engineering Coordination Memo" Then
sheetName = "ECM"
ElseIf Sheets("Sheet1").Range("A2") = "Critical Design Review" Then
sheetName = "CDR"
ElseIf Sheets("Sheet1").Range("A2") = "Preliminary Design Review" Then
sheetName = "PDR"
ElseIf Sheets("Sheet1").Range("A2") = "Qualification by Similarity and Analysis" Then
sheetName = "QSR"
ElseIf Sheets("Sheet1").Range("A2") = "Qualification by Test Procedure" Then
sheetName = "QTP"
ElseIf Sheets("Sheet1").Range("A2") = "Reliability Report" Then
sheetName = "REL"
ElseIf Sheets("Sheet1").Range("A2") = "Specification Compliance Tabulation" Then
sheetName = "SCT"
End If
Dim rowCount As Integer
Dim sourceCol As Integer
sourceCol = 2 'column B has a value of 2
With Sheets(sheetName)
rowCount = .Cells(Rows.Count, sourceCol).End(xlUp).Row
.Range("B" & rowCount + 1 & ":I" & rowCount + 1) = Sheets("Sheet1").Range("B2:I2").Value
End With
Sheets("Sheet1").Range("A5") = Sheets(sheetName).Range("A" & rowCount + 1).Value
End Sub