2014-07-08 2 views
1

VBA를 배우면서 인터넷에서 많은 코드를 복사 해 냈습니다. 어떤 점에서 나는 이름이 "Add"인 메소드를 사용할 때마다 VBA IDE가이를 자동으로 "add"로 변경한다는 것을 알아 챘다. 예를 들어 ActiveSheet.PivotTables.Add을 입력하면 자동으로 ActiveSheet.PivotTables.add으로 변환됩니다. Worksheets.AddWorksheets.add으로 변경되는 경우에도 마찬가지입니다. 메소드의 기본 대소 문자를 복원하는 방법은 무엇입니까?VBA에서 메서드 이름의 대/소문자를 변경하는 방법?

VBA IDE는 선언 된 방식에 따라 변수의 대소 문자를 변경한다는 것을 알고 있습니다 (How does one restore default case to a variable in VBA (Excel 2010)? 참조). 그러나 그것이 내 문제와 관련이 있는지 확실하지 않습니다.

+0

IDE에서 빈 워크 시트를 열거 나 특정 vba 프로젝트에있는 경우에도 이런 현상이 발생합니까? –

+0

어떤 방법 으로든 성능에 영향을 줍니까? 나는 특정 방법이 더 낮은 경우를 다루는 몇 가지 단점을 발견했다. 그러나 나의 경험에서 그것은 중요하지 않으며 코드는 여전히 실행되어야한다. 오류가 있습니까? –

+0

이것은 모호한 VBA 편집기 단점 중 하나입니다. autocorrect는 긴 변수의 이름을 잘못 입력하지 않았 음을 의미하므로 이점을 사용합니다. 'Ctrl-j' (Intellisense)와 함께 사용하면 코드 작성에 많은 도움이됩니다. 그것이 문제라면, 아래의 해답에서 가능한 이유 또는 해결책을 논의했습니다. – hnk

답변

1

일부 변수 또는 함수 또는 하위를 프로젝트 (또는로드 한 추가 기능)에 add으로 선언했기 때문에 이러한 현상이 발생합니다.

VBA 환경은 변수 이름/함수 이름의 마지막으로 선언 된 대/소문자 표현을 가져 와서 발생하는 모든 인스턴스에 적용합니다.

예.

Function Func1()  
Dim ART As Double 
ART = 1 
' in one function 
End Function 

' Now if I type the following in another function 
Function Func2() 
Dim aRt as Double 
End Function 

' the original declaration in the first function becomes 
Dim aRt As Double 
aRt = 1 

이 동작은 바람직하거나 바람직하지 않을 수 있지만 확실히 설계된 것입니다.

당신이, 열거 형 등을 작동

#If False Then 
    Dim HeWhoseCaseShallNotBeChanged 
    Dim ADd  ' Even methods can be "declared" here. It will have no effect on execution 
#End If 

이를 같은 것을 할 필요가 변수를 선언하고 그들이 (특정 Enum 초 동안 등을 유용) 케이스를 변경하지하려면

그리고 당신 이 compiler directive을 모듈 페이지 상단에 선언 할 수 있습니다.

관련 문제