运行时错误'1004':对象'_Worksheet'的方法'名称'失败

时间:2019-12-17 09:09:40

标签: excel vba

大家好,

我试图根据输入的单元格文本使用以下名称来命名工作表:

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

我不明白为什么我在一个宏上而不是在另一个宏上收到此错误。有什么想法吗?

1 个答案:

答案 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")

检查以上所有范围是否存在。