2014-05-23 56 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