我对VBA相当陌生。
我有一段代码,从一个电子表格复制了列K中有数字数据的所有行。这将在多个电子表格上运行,这些电子表格具有不同的练习名称和作业编号。
作为作业编号的练习只出现在原始工作表的一个单元格中,这就是为什么要在If语句的单独一行代码中检查值是否为数字。
我让带数字的行先放进去。然后我将练习和工作编号添加到S和r列中。我的初始代码工作正常,只是范围以。range("R2:2",lastrow)。值,所以当它复制我想要复制的东西时它总是从R2开始粘贴,所以习题1的所有行现在都是习题2了。每次我复制任何东西都会发生这种情况。
然后我尝试定义第一行和最后一行,但我得到error1004。
这是我的原始代码,覆盖:
'Import job number and exercise
Dim jobnumber As String
Dim exercise As String
jobnumber = ActiveSheet.Range("S3").Value
exercise = ActiveSheet.Range("B4").Value
lastrow = Workbooks("GQE Asana Import").Sheets("Sheet1").Cells(Rows.Count, "K").End(xlUp).Row
Workbooks("GQE Asana Import").Sheets("Sheet1").Range("R2:R" & lastrow).Value = jobnumber
Workbooks("GQE Asana Import").Sheets("Sheet1").Range("S2:S" & lastrow).Value = exercise
这是我试图使起始范围即"R2: "动态给出1004错误
'Import job number and exercise
Dim jobnumber As String
Dim exercise As String
Dim firstrowjn As Integer
Dim firstrowex As Integer
jobnumber = ActiveSheet.Range("S3").Value
exercise = ActiveSheet.Range("B4").Value
lastrow = Workbooks("GQE Asana Import").Sheets("Sheet1").Cells(Rows.Count, "K").End(xlUp).Row
firstrowjn = Workbooks("GQE Asana Import").Sheets("Sheet1").Cells(Rows.Count, "R").End(xlUp).Row + 1
firstrowex = Workbooks("GQE Asana Import").Sheets("Sheet1").Cells(Rows.Count, "S").End(xlUp).Row + 1
Workbooks("GQE Asana Import").Sheets("Sheet1").Range(firstrowjn & lastrow).Value = jobnumber
Workbooks("GQE Asana Import").Sheets("Sheet1").Range(firstrowex & lastrow).Value = exercise
我已经遍历了它,并首先选择了正确的行号。它似乎只是在添加单元格值时中断。
我尝试过在set关键字使用范围而不是整数,我尝试过cells()而不是range(),但这不会出错,它也不会改变值。我尝试过范围(单元格…),但它也不喜欢这样定义。我尝试了每个循环,但这需要相当长的时间来完成,我不能再绕过动态定义范围的问题。
如何设置起始范围- R2:R"像最后一行一样动态?
注意:最后一行设置在代码的后面,并且是一个整数。我使用K列,因为它有第一批数据,所以这是多少时间的工作没有/练习需要在列R和s中运行。宏将运行完每个工作表的数据,因为每个月的数字都会有所不同,这就是为什么我使用活动表。
我想这涵盖了一切。提前感谢您的帮助!
可以在范围函数中使用单元格函数。像这样使用它:range(cells(row1,column1),cells(row2,column2))你不能在cells函数中使用字符,你必须使用数字代替。对于R,数字是18,对于S,数字是19(按字母顺序)
Workbooks("GQE Asana Import").Sheets("Sheet1").Range(Cells(firstrowjn, 18), Cells(lastrow, 18)).Value = jobnumber
Workbooks("GQE Asana Import").Sheets("Sheet1").Range(Cells(firstrowex, 19), Cells(lastrow, 19)).Value = exercise