2015-10-21 13 views
1

Я хочу код VBA, который переименует мой sheetXXX, где XXX - это значение в ячейке B5 в листе Sheet1. Макрос должен работать для любого значения в B5.VBA переименовать лист на основе значения ячейки

Я попытался следующий код:

Sub tabname() 
    Dim sheetXXX As Worksheet 
    XXX.Name = Worksheets("Sheet1").Range("B5").Value 
End Sub 
+0

Вместо использования Worksheets ("Лист1"), вы должны использовать ActiveSheet Собственость знать больше визита [здесь] (https://msdn.microsoft.com/en-us/library/office/ff822753.aspx? f = 255 & MSPPError = -2147217396) – newguy

ответ

0

Вы должны установить объект = фактического рабочего листа будет переименован.

Sub tabname() 
    Dim sheetXXX As Worksheet 
    Set sheetXXX = ActiveWorkbook.Sheets("sheetXXX") 
    sheetXXX.Name = "Sheet" & Worksheets("Sheet1").Range("B5").Value 
End Sub 

Если sheetXXX предназначен для активного рабочего листа, вы сделаете это.

Sub tabname() 
    Dim sheetXXX As Worksheet 
    Set sheetXXX = ActiveWorkbook.Activesheet 
    sheetXXX.Name = "Sheet" & Worksheets("Sheet1").Range("B5").Value 
End Sub 
+0

По-прежнему появляется ошибка «требуемый объект» – Jonathan

+1

Вы изменили 'XXX.Name' = на' sheetXXX.Name = 'в третьей строке? – MatthewD

+0

Это не активный рабочий лист, поэтому мы должны использовать ActiveWorkbook.Sheets («sheetXXX») Но, к сожалению, это не работа eihter:/ – Jonathan

Смежные вопросы