首页 > 解决方案 > 如何根据单元格中的文本命名工作表?

问题描述

我正在尝试根据输入的单元格文本命名工作表:

Sheet2.Name = Range("C2")

这是在另一个宏中工作:

Sub Sheetname()
Sheet3.Unprotect
ThisWorkbook.Unprotect
Sheet3.Name = Range("C2")
Sheet3.Protect ""
ThisWorkbook.Protect
End Sub

在我的主要宏上,它给了我

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

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

标签: excelvba

解决方案


到目前为止,运行时错误 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")

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


推荐阅读