Есть ли способ пакетного переименования листов в VBA:Excel VBA: Пакетное переименование листов
Что-то вроде:
sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!")
именовании листов 1, 2, 3, как "ГПУ", "эй" и "heppa!"
Есть ли способ пакетного переименования листов в VBA:Excel VBA: Пакетное переименование листов
Что-то вроде:
sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!")
именовании листов 1, 2, 3, как "ГПУ", "эй" и "heppa!"
Это так близко, как я мог бы получить его, кто-то может найти способ, чтобы пропустить петля
[Обновлены стандартным образом я хотел бы сделать это ниже, включая обработку ошибок - я на самом деле не попытался установить коллекцию листов, как это раньше]
Normal Code
Sub Normal()
Dim strShtOld()
Dim strShtNew()
Dim sht As Worksheet
Dim lngSht As Long
strShtNew = Array("hep", "hey", "heppa!")
strShtOld = Array("Sheet1", "Sheeta2", "Sheet3")
On Error Resume Next
For lngSht = LBound(strShtOld) To UBound(strShtOld)
Set ws = Nothing
Set ws = Sheets(strShtOld(lngSht))
If Not ws Is Nothing Then ws.Name = strShtNew(lngSht)
Next lngSht
End Sub
Почему пакетного переименования, или же любопытство у вас есть такое большое количество переименование сделать, что вы связаны с кодом выполнения?
Array Effort
Sub ArrayEx()
Dim varShts
Dim varSht
Dim strArray()
strArray = Array("hep", "hey", "heppa!")
Set varShts = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For varSht = 1 To varShts.Count
varShts(varSht).Name = strArray(varSht - 1)
Next
End Sub
Я создал пару макросов:
Macro 1:
Sub Sheetlist()
Dim x As Integer
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "sheetlist"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Sheet List"
Range("C1").Select
ActiveCell.FormulaR1C1 = "New List"
For x = 1 To Worksheets.Count
Cells(x + 1, 1).Value = Worksheets(x).Name
Next x
End Sub
Этот макрос создает таблицу в текущей рабочей книге под названием "sheetlist" с список всех листов в вашей текущей книге. На этом листе также есть столбец «Новый список» (C1), в который вы можете ввести столько имен листов, сколько хотите переименовать.
Теперь вы можете удалить имена из столбца A1, которые вы хотите исключить из процесса переименования. Убедитесь, что в столбцах A и C нет пробелов, и что число имен в A и C также соответствует.
Теперь вы готовы к запуску 2-й Macro:
Sub batchrename()
'
' batchrename Macro
'
Dim OldSheetName As String
Dim NewSheetName As String
Dim SheetCount As Integer
Dim NewSheetList As String
NewSheetList = InputBox("How many names are there?") + 1
For SheetCount = 1 To Range("C2:C" & NewSheetList).Count
OldSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 1)
NewSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 3)
Sheets(OldSheetName).Select
ActiveSheet.Name = NewSheetName
Next SheetCount
End Sub
Этот макрос будет идти на имена, перечисленные в sheetlist А и изменить их имена, перечисленные в sheetlist C. Стремительное спросит вас, где список имен, введите количество имен, которые у вас есть в столбце C, и нажмите enter.
Наслаждайтесь
Это о том, что я в конечном итоге делает, за исключением я не был полностью уверен в назначении массива обсчитывать – abcde123483
+1 это совершенно необязательно, но вы можете также Redim strArray и сделать это один основе, так что вы Wouldn» t необходимо вычесть один из них в цикле. – JimmyPena