2011-12-30 10 views

ответ

2
  • Очевидно, что он не работает непосредственно
  • А некоторые эксперименты с SelectedSheets не привело anywere

Это так близко, как я мог бы получить его, кто-то может найти способ, чтобы пропустить петля

[Обновлены стандартным образом я хотел бы сделать это ниже, включая обработку ошибок - я на самом деле не попытался установить коллекцию листов, как это раньше]

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 
+0

Это о том, что я в конечном итоге делает, за исключением я не был полностью уверен в назначении массива обсчитывать – abcde123483

+0

+1 это совершенно необязательно, но вы можете также Redim strArray и сделать это один основе, так что вы Wouldn» t необходимо вычесть один из них в цикле. – JimmyPena

0

Я создал пару макросов:

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.

Наслаждайтесь

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