2014-05-23 54 views
2

我想在VBA中自動定義工作表名稱。自動定義工作表名稱

這是我所創建的代碼:

Range("F7:F11").Select 
Selection.Copy 
Sheets("janeiro").Select 
Range("F7").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

基本上,我需要在單元格B2的內容來定義表的名稱。在這個例子中,工作表的實際名稱是「janeiro」,但我需要通過單元格b2的內容定義名稱。例如,February, March...以自動方式完成。

這可能嗎?

+0

有一些陷阱與命名錶。我寫了一篇關於它的[博客文章](http://christopherjmcclellan.wordpress.com/2013/10/25/dynamically-naming-excel-worksheets-the-headache-free-way/),您可能會感興趣。 – RubberDuck

回答

3

Range("B2").Value替換「janeiro」。

然後,你的代碼收緊有點avoid using Select methods

Range("F7:F11").Copy 
Sheets(Range("B2").Value).Range("F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

注:如果指定SHEETNAME不存在,這將產生一個錯誤。

或者......這將是一個很好的機會,向您展示如何使用變量,而不是明確提到:

Dim shName as String 'Defines a STRING variable which we will use to hold a sheet name 

shName = Range("B2").Value 

'## Now, we can simply refer to shName any time we need to refer to the value in "B2" 

Range("F7:F11").Copy 
Sheets(shName).Value).Range("F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False