任何人都在这里帮助我,我收到了运行时错误' 1004'。应用程序定义或对象定义的错误。
我收到错误:lastrow = Sheets(" CATAN")。Cells(Rows.Count," F")。End(x1Up).Row
Dim lastrow As Long
lastrow = Sheets("CATAN").Cells(Rows.Count, "F").End(x1Up).Row
Sheets("CATAN").Range("E:E").Locked = False
Sheets("CATAN").Range("E1").Select
ActiveCell.Formula = "=F1&""&G1"
Sheets(Catan).Range("E1").AutoFill Destination:=Range("E1:E" & lastrow), Type:=xlFillDefault
Sheets("CATAN").Range("E:E").Locked = True
第1行的数据是
A | B | C | D | E | F | G 100 | 492935.7 | 6898792 | 56.707 | | %PO | AB9265 101 | 492937.7 | 6898796 | 56.862 | | NS |
所以我无法解决我的错误。
答案 0 :(得分:3)
如评论中所述:
L
中的小写1
代替xlUp
。
您无需解锁并重新锁定单元格,只需确保单页不受保护。
您可以使用R1C1表示法一次性设置公式。
Dim lastrow As Long
lastrow = Sheets("CATAN").Cells(Rows.Count, "F").End(xlUp).Row
Sheets("CATAN").Range("E1:E" & lastrow).FormulaR1C1 = "=RC[1] & RC[2]"
答案 1 :(得分:3)
您可以使用1行代码执行此操作:
Sheets("CATAN").Range("E1:E" & Sheets("CATAN").Range("F" & Rows.Count).end(xlup).row).formula = "=F1 & "" "" & G1"
它足够聪明,知道你想根据行增加。
我以为你想在F1和G1的结果之间留一个空格
答案 2 :(得分:1)
请参阅the answer by Scott Craner以获得更好的方法来实现您的代码,但我会留下以下内容,以便您了解自己的错误,以便您(以及其他人)将来可以避免这些错误。< / p>
你有一个拼写错误 - x1Up
而不是xlUp
。
您的代码中还有其他几个错误,修复如下:
Dim lastrow As Long
'Fix typo and specify which sheet "Rows" refers to
lastrow = Sheets("CATAN").Cells(Sheets("CATAN").Rows.Count, "F").End(xlUp).Row
Sheets("CATAN").Range("E:E").Locked = False
Sheets("CATAN").Range("E1").Select
'=F1&"&G1 is not a valid Excel formula
ActiveCell.Formula = "=F1&G1"
'Variable Catan not defined - I assume you mean the string "CATAN"
Sheets("CATAN").Range("E1").AutoFill Destination:=Range("E1:E" & lastrow), Type:=xlFillDefault
Sheets("CATAN").Range("E:E").Locked = True