【发布时间】:2021-03-02 17:31:46
【问题描述】:
我对 VBA 还很陌生。
我有一段代码将 K 列中包含数字数据的所有行从一个电子表格复制到另一个电子表格。这将在多个电子表格上运行,这些电子表格具有不同的练习名称和工作编号。
作为作业编号的练习仅出现在原始工作表的一个单元格中,这就是为什么它在 If 语句的单独代码行中检查值是否为数字。
我让带数字的行先进入。然后我将练习和作业编号添加到 S 和 R 列中。我的初始代码工作正常,除了范围被给出为 .range("R2:2" & lastrow).Value 所以虽然它确实复制了我想要它复制的内容它总是从 R2 开始粘贴,所以练习 1 的所有行现在都是练习 2。每次我复制任何内容时都会发生这种情况。
然后我尝试定义 firstrow 和 lastrow,但我得到 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:R”动态的代码,它给出了 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
我已经完成了它,firstrowjn 等都选择了正确的行号。它似乎只是在添加单元格值时中断了。
我尝试在 set 关键字处使用范围而不是整数,我尝试使用 cells() 而不是 range(),但是虽然这不会出错,但它也不会更改值。我试过 Range(Cells...) 但它也不喜欢这样定义。我尝试了 for each 循环,但这需要更长的时间才能完成,而且我无法解决动态定义范围的问题。
如何使起始范围 - “R2:R”像最后一行一样动态?
注意:最后一行在代码中设置得更远,并且是一个整数。我使用 K 列,因为它有第一批数据,所以这就是工作没有/练习需要在 R 和 S 列中的多少时间。宏将用数据用完每张纸,因为数字会有所不同每个月,这就是我使用 activesheet 的原因。
我认为这涵盖了所有内容。提前感谢您的帮助!
【问题讨论】: