大家好,
我试图根据输入的单元格文本使用以下名称来命名工作表:
Sheet2.Name = Range("C2")
在另一个简单的宏中表现出色:
Sub Sheetname()
Sheet3.Unprotect
ThisWorkbook.Unprotect
Sheet3.Name = Range("C2")
Sheet3.Protect ""
ThisWorkbook.Protect
End Sub
但是在我的主宏上它不起作用,并给我运行时错误'1004':
Sub write_date_plant1()
ThisWorkbook.Unprotect
Sheets("Total").Unprotect
Sheets("MPT").Unprotect
Dim score As Integer
score = WorksheetFunction.WeekNum(Now())
'score = Range("B1").Value
If score = Worksheets("MPT").Range("B3") Then
Sheets("MPT").Range("B4").Value = Sheet2.Range("ok_plant1").Value
Sheets("MPT").Range("B5").Value = Sheet2.Range("minor_plant1").Value
Sheets("MPT").Range("B6").Value = Sheet2.Range("pdca_plant1").Value
Sheets("MPT").Range("B7").Value = Sheet2.Range("major_plant1").Value
Sheets("MPT").Range("B8").Value = Sheet2.Range("nope_plant1").Value
End If
...
If score = Worksheets("MPT").Range("Q3") Then
Sheets("MPT").Range("Q4").Value = Sheet2.Range("ok_plant1").Value
Sheets("MPT").Range("Q5").Value = Sheet2.Range("minor_plant1").Value
Sheets("MPT").Range("Q6").Value = Sheet2.Range("pdca_plant1").Value
Sheets("MPT").Range("Q7").Value = Sheet2.Range("major_plant1").Value
Sheets("MPT").Range("Q8").Value = Sheet2.Range("nope_plant1").Value
End If
Sheets("Total").Range("C4") = Date
Sheet2.Name = Range("C2")
Sheets("Total").Protect
Sheets("MPT").Protect
ThisWorkbook.Protect
End Sub
我不明白为什么我在一个宏上而不是在另一个宏上收到此错误。有什么想法吗?
答案 0 :(得分:0)
到目前为止,导致运行时错误1004的最常见原因是VBA代码引用的命名范围不存在。名称可能在代码中拼写错误。或者也许使用了无效的名称。
检查是否所有范围都存在:
Sheets("Total")
Sheets("MPT")
Sheet2.Name = Range("C2")
Sheet2.Range("ok_plant1")
Sheet2.Range("minor_plant1")
Sheet2.Range("pdca_plant1")
Sheet2.Range("pdca_plant1")
Sheet2.Range("nope_plant1")
检查以上所有范围是否存在。