2011-07-22 8 views
1

これは私の最初のExcelマクロであり、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 :)しかし、2つの提案。 1) "Dim WS As Worksheet"をループの外側に置きます。 2)その名前のシートがある場合は、上記のコードが失敗するため、エラー処理を含めることができます:) –

+0

良い提案、ありがとうございます。 – N0Alias

3

アクティブシートが変更されていないので、別のシートを選択していません。

上記のワークブック内のワークシートのすべてに各ワークシートにcurrentWorksheetを設定しますfor..eachループされているものを
Dim currentWorksheet as Worksheet 
For Each currentWorksheet in ActiveWorkbook.Worksheets 
    currentWorksheet.name = currentWorksheet.Range("A2").Value 
Next currentWorksheet 

:あなたが意図した結果を取得するには、以下のあなたの関数を書き換えることができます。

+0

私はメモリのオフに行っていたので、現時点では私と一緒に秀でていない –

+0

@Jordanフォアマンは申し訳ありませんが、最初の行に構文エラーを取得しています。私は私の応答を編集し、今すぐ動作するはずです。 –

関連する問題