vba에서 dim과 set의 차이점은 무엇입니까?
VBA 신입생으로서 죄송합니다.
가끔 사용합니다.
Dim r as Range
r = Range("A1")
내가 사용하는 다른 시간
Set r = Range("A1")
무엇이 다른가요?그리고 언제 무엇을 사용해야 합니까?
사용할 이유가 없습니다.set
대상 참조를 참조하지 않는 한.그런 맥락에서만 사용하는 것이 좋습니다.다른 모든 단순 데이터 유형의 경우에는 할당 연산자를 사용합니다.하는 것이 좋습니다dim
(차원) 그러나 모든 변수:
단순한 데이터 유형의 예는 다음과 같습니다.integer
,long
,boolean
,string
이들은 데이터 유형일 뿐 고유한 방법과 속성을 가지고 있지 않습니다.
Dim i as Integer
i = 5
Dim myWord as String
myWord = "Whatever I want"
의 예object
가 될 것이.Range
,aWorksheet
또는Workbook
이들은 고유한 방법과 특성을 가지고 있습니다.
Dim myRange as Range
Set myRange = Sheet1.Range("A1")
다음을 제외한 마지막 줄을 사용하려는 경우Set
VB에서 오류가 발생합니다.이제 당신은 가지고 있습니다.object
속성 및 메서드에 액세스할 수 있다고 선언했습니다.
myString = myRange.Value
Dim
변수를 선언합니다.Dim r As Range
Set
변수를 개체 참조로 설정합니다.Set r = Range("A1")
하지만, 저는 이것이 당신이 정말로 요구하는 것이라고 생각하지 않습니다.
가끔 사용하는 경우:
Dim r as Range r = Range("A1")
이건 절대 안 될 거예요.없이.Set
런타임 오류 #91 Object variable 또는 With block variable not set을 받게 됩니다.사용해야 하기 때문입니다.Set
변수 값을 객체 참조에 할당합니다.그러면 위의 코드가 작동할 것입니다.
아래 코드가 당신이 정말로 무엇을 묻고 있는지를 보여준다고 생각합니다.유형을 선언하지 않고 다음과 같이 가정합니다.r
을 보다Variant
대신 타이핑합니다.
Public Sub test()
Dim r
debug.print TypeName(r)
Set r = Range("A1")
debug.print TypeName(r)
r = Range("A1")
debug.print TypeName(r)
End Sub
자, 여기서 일어나는 일들을 분석해 보겠습니다.
r
변종으로 선언됨`Dim r` ' TypeName(r) returns "Empty", which is the value for an uninitialized variant
r
에 설정됩니다.Range
셀 "A1"을 포함Set r = Range("A1") ' TypeName(r) returns "Range"
r
의 기본 속성 값으로 설정됩니다.Range("A1")
.r = Range("A1") ' TypeName(r) returns "String"
이 경우 범위의 기본 속성은 다음과 같습니다..Value
따라서 다음 두 줄의 코드는 동일합니다.
r = Range("A1")
r = Range("A1").Value
기본 개체 속성에 대한 자세한 내용은 Chip Pearson의 "Default Member of a Class"를 참조하십시오.
당신의 경우는Set
예:
내가 사용하는 다른 시간
Set r = Range("A1")
이것은 처음에 다음과 같이 선언하지 않고서는 작동하지 않을 것입니다.r
이다.Range
또는Variant
객체...사용Dim
진술 - 당신이 가지고 있지 않은 한.Option Explicit
활성화해야 합니다.항상.그렇지 않으면 선언하지 않은 식별자를 사용하고 있으며 이러한 식별자는 모두 암묵적으로 변형으로 선언됩니다.
Dim: 변수를 정의하고 있습니다(여기서 r은 범위 유형의 변수입니다).
Set: 속성을 설정합니다(여기서 r의 값을 Range("A1")로 설정합니다). 이것은 유형이 아니라 값입니다.
r이 단순한 유형(예: int, string)이라면 set을 객체와 함께 사용해야 합니다.
Dim r As Integer
r=5
Dim
값과 유형을 선언합니다.
Set
변수에 값을 할당합니다.
변수가 객체로 정의된 경우(예:dim myfldr 폴더는 "Set" 키워드를 사용하여 값을 할당합니다.
Dim
Dimension의 줄임말이며 VBA 및 VB6에서 로컬 변수를 선언하는 데 사용됩니다.
반면 설정은 변수 선언과 관련이 없습니다. 그Set
키워드는 개체 변수를 새 개체에 할당하는 데 사용됩니다.
그것이 당신에게 차이점을 명확히 해주기를 바랍니다.
SET 문에 대한 VBA 도움말에 따르면 속성을 변경하면 실제 개체도 변경됩니다. object.so 에 대한 참조가 설정됩니다.
Dim newObj as Object
Set var1=Object1(same type as Object)
Set var2=Object1(same type as Object)
Set var3=Object1(same type as Object)
Set var4=Object1(same type as Object)
Var1.property1=NewPropertyValue
다른 Vars 속성도 변경되므로 다음과 같습니다.
Var1.property1=Var2.property1=Var3.property1=Var4.property1=Object1.Property1=NewpropertyValue`
실제로 모든 변수는 동일합니다!
언급URL : https://stackoverflow.com/questions/3872339/what-is-the-difference-between-dim-and-set-in-vba
'programing' 카테고리의 다른 글
단어 목록에 대한 PostgreSQL 와일드카드 LIKE (0) | 2023.05.08 |
---|---|
요소에 공백이 있는 Bash 배열 (0) | 2023.05.08 |
프로그램에서 던져진 예외에 대한 강제 중단 (0) | 2023.05.08 |
자동 레이아웃을 사용하여 전체 너비의 백분율을 만드는 방법은 무엇입니까? (0) | 2023.05.08 |
BehaviorSubject와 Observable의 차이점은 무엇입니까? (0) | 2023.05.08 |