2011-07-22 61 views
1

這是我第一次使用VBScript的宏(也是第一次使用VBScript),所以它很可能是錯誤的,但我試圖通過工作簿中的每張工作表,並將工作表重命名爲工作表的值「A2 「細胞的價值。正如名字所說,這個函數在我運行時沒有做任何事情。它正在運行。這裏是我的代碼:Excel宏沒有做什麼?

Sub RenameSheets() 

    Dim WS_Count As Integer 
    Dim I As Integer 

    ' Set WS_Count equal to the number of worksheets in the active 
    ' workbook. 
    WS_Count = ActiveWorkbook.Worksheets.Count 

    ' Begin the loop. 
    For I = 1 To WS_Count 

     ActiveSheet.Name = ActiveSheet.Range("A2").Value 

    Next I 

End Sub 

回答

4
Sub RenameSheets() 

Dim WS_Count As Integer 
Dim I As Integer 

WS_Count = ActiveWorkbook.Worksheets.Count 

For I = 1 To WS_Count 
Dim WS As Worksheet 
Set WS = ActiveWorkbook.Worksheets(I) 

'Worksheet names can not be null 
If Len(WS.Cells(2, 1)) > 0 Then 

    WS.Name = WS.Cells(2, 1) 

End If 

Next I 

End Sub 
+1

+1 :)但是有兩點建議。 1)將「Dim WS As Worksheet」放置在循環外部。 2)你可能希望包含錯誤處理,因爲如果有一張表名爲上述代碼將失敗:) –

+0

好的建議,謝謝。 – N0Alias

3

您沒有選擇不同的工作表,所以ActiveSheet沒有改變。您可以在下面重新編寫函數來獲得想要的結果:

Dim currentWorksheet as Worksheet 
For Each currentWorksheet in ActiveWorkbook.Worksheets 
    currentWorksheet.name = currentWorksheet.Range("A2").Value 
Next currentWorksheet 

什麼上面是for..each循環將在所有工作簿中的工作表的設置currentWorksheet每個工作表。

+0

我在第一行收到語法錯誤 –

+0

@Jordan Foreman抱歉,我目前沒有出色的表現,所以我的內存不足。我編輯了我的回覆,現在應該可以工作。 –