2017-05-12 2 views
-1

이것은 일반적인 질문 일 뿐이지 만 이것이 하나의 예가 될 수 있습니다.VBA : 이름이 두 단어 인 경우 어떻게 변수를 선언합니까?

"모든 주식"이라는 워크 시트가 있습니다. 이름은 두 단어이므로 워크 시트로 선언 할 수는 없습니다. 어떻게이 문제를 해결할 수 있습니까?

Dim all stocks as Worksheet 
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "All Stocks" 
+3

:

또한, (일반) 변수 컨테이너가 객체의 문자열 리터럴 이름과 정확하게 일치해야하는 이유는 없다, 당신은 유형 Worksheet의 변수를 선언 할 수 있습니다 너는 그랬다. 그러나 좀 더 나아가도록하겠습니다.'Set AllStocks = Worksheets ("all stocks")'. VBA에서 이름에 공백이있는 변수를 정의하려면이 작업을 수행 할 수 없다고 말해야합니다. – Masoud

+0

귀하의 질문은 완전히 명확하지 않습니다. * 무언가를 정의한다는 것은 무엇을 의미합니까? 무엇인가 * 무엇입니까? 그리고 그것을 어떻게 * 워크 시트로 정의하려고합니까? 질문에 답하는 것이 더 명확하도록 질문을 편집하고, 게시물에 넣은 단어가 설명하는 것 이외에 무엇을 하려는지 전혀 알지 못하게하십시오. 당신이 묻고있는 것을 이해하기 위해 당신의 스크린을 보거나 당신의 마음을 읽을 수 없습니다. –

+0

그래, 나는 그렇게 명확하지 않았다. 내가 쓰려 던 의미는 정의가 아니라 선언이었다. 이 문제가 두 번 이상 있었으므로 VBA에 대한 일반적인 질문이었습니다. 나는 그 뜻을 예증과 함께 편집했다. –

답변

3

변수에는 이름이 있어야합니다. 이름은 희미한 단어의 오른쪽에 쓰여 있습니다. 당신의 변수 이름을 지정할 때 따라야 할 규칙이 있습니다

문자 나 밑줄로 시작 후 문자 나 밑줄

로 시작되는 변수의 이름, 이름이 문자를 만들 수 있습니다, 밑줄 그리고 어떤 순서

의 숫자 변수의 이름은 변수의 이름은 255 자까지 가질 수있는 기간

을 가질 수 없습니다. 이

당신이 당신의 변수 이름을 사용하지 (해야한다) 할 몇 가지 단어가 있습니다

을 사용하는 경우

변수의 이름은 지역 고유해야합니다. 이러한 단어는 VBA 내부 용으로 예약되어 있습니다. 따라서 이러한 단어를 키워드라고합니다. 그들 중 일부는 다음과 같습니다 함수에 대해 false를 그리고 부울하는 ByRef 바이트 ByVal의 전화 케이스 CBool ​​CByte에서는 CDate CDbl에는에 CInt하는 CLng 헌장 CSNG 함수에서는 CStr 날짜 희미한 함을 두 번 각 그렇지 의 ElseIf 끝 ENDIF 오류로 (비트 단위)와 (조건) 고토 받기 정수 해방 긴 루프 나 중순 모 새로운 다음하지 아무것도 옵션 또는 (비트 단위) 또는 (조건) 민간 공공 ReDim을가 REM 동안이 Xor

vbCrLf vbTab으로까지 true로 그런 설정을 선택 단일 정적 단계 문자열 서브를 다시 시작하자 경우

이미 언급했듯이 변수를 선언하려면 t ype Dim 이름 다음에.

출처 :이 선언 워크 시트로 내가 할 수 아니에요 http://www.functionx.com/vbaexcel/Lesson03.htm

+0

"영역"은 "범위"로 더 정확합니다. VBA는 모호하게 모호한 이름 지정을 허용합니다. –

1

, 당신은이 문제를 얻는 방법?

글쎄, 당신은 워크 시트를 선언에 이미 존재하기 때문에, 필요로하지 않으며, 이름, 인덱스, 또는 코드 명에 액세스 할 수 있습니다.

Worksheets("Sheet1") 'Name 
Worksheets(1)   'Index 
Sheet1     'CodeName 

당신은 Worksheet 클래스 객체 변수에 다음 중 하나를 지정할 수 있으며, 결과는 동일합니다 :

Dim ws as Worksheet 
Set ws = Worksheets(1) 
MsgBox ws.Name 
Set ws = Sheet1 
MsgBox ws.Name 
Set ws = Worksheets("Sheet1") 
MsgBox ws.Name 

그리고 당신은 단지 재 할당하여 다른 개체에 대한 포인터를 변경할 수 있습니다

Set ws = Worksheets("Sheet2") 'Now ws represents Sheet2 instead of Sheet1 

등등.내가 뭘처럼 정의

Dim ws as Worksheet 
Set ws = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)) 
ws.Name = "All Stocks" 
관련 문제