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

가 명명 시트와 몇 개는있다합니다. 나는 [blog post] (http://christopherjmcclellan.wordpress.com/2013/10/25/dynamically-naming-excel-worksheets-the-headache-free-way/)를 작성하여 흥미로운 부분을 찾을 수 있습니다. – RubberDuck

답변

3

"janeiro"를 Range("B2").Value으로 바꿉니다.

그런 다음, 조금 avoid using Select methods에 코드를 조 :

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

참고 : 지정된 시트 이름이 존재하지 않는 경우이 오류가 인상됩니다.

OR ...이 아니라 명시 적 참조보다 변수을 사용하는 방법을 보여 수있는 좋은 기회가 될 것입니다 :

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