이 글은 도움말을 번역한 글입니다.
With 문
단일 개체 또는 사용자 정의 유형에 대해 일련의 문을 실행합니다.
Syntax
With object [ statements ] End With
object : 필수입니다. 개체 또는 사용자 정의 유형의 이름입니다.
statements : 선택 사항입니다. 개체에서 실행할 하나 이상의 문입니다.
With 문을 사용하면 전체 문 시리즈에 대해 객체 또는 사용자 정의 유형을 한 번만 지정할 수 있습니다. With 문을 사용하면 프로시저를 더 빠르게 실행할 수 있고 반복적인 입력을 피할 수 있습니다.
다음 예에서는 숫자 30으로 셀 범위를 채우고 굵은 서식을 적용하며 셀의 내부 색상을 노란색으로 설정합니다.
Sub FormatRange()
With Worksheets("Sheet1").Range("A1:C10")
.value = 30
.Font.Bold = True
.Interior.Color = RGB(255, 255, 0)
End With
End Sub
효율성을 높이기 위해 With 문을 중첩할 수 있습니다. 다음 예제에서는 A1 셀에 수식을 삽입한 다음 글꼴 서식을 지정합니다.
Sub MyInput()
With Workbooks("Book1").Worksheets("Sheet1").Cells(1, 1)
.Formula = "=SQRT(50)"
With .Font
.name = "Arial"
.Bold = True
.Size = 8
End With
End With
End Sub
비고
With 문을 사용하면 개체 이름을 다시 확인하지 않고도 지정된 개체에 대해 일련의 문을 수행할 수 있습니다. 예를 들어 단일 개체의 여러 속성을 변경하려면 속성 할당 문을 With 제어 구조 내에 배치하여 각 속성 할당마다 개체를 참조하는 대신 개체를 한 번만 참조하면 됩니다.
다음 예제는 동일한 개체의 여러 프로퍼티에 값을 할당하기 위해 With 문을 사용하는 방법을 보여줍니다.
With MyLabel
.Height = 2000
.Width = 2000
.Caption = "This is MyLabel"
End With
Note
With 블록이 입력되면 개체를 변경할 수 없습니다. 따라서 단일 With 문을 사용하여 여러 다른 개체에 영향을 줄 수 없습니다.
With 문 하나를 다른 With 블록 내에 배치하여 With 문을 중첩할 수 있습니다. 그러나 외부 With 블록의 멤버는 내부 With 블록 내에서 마스킹되므로 내부 With 블록의 정규화된 개체 참조를 외부 With 블록에 있는 개체의 모든 멤버에 제공해야 합니다.
일반적으로 With 블록에 들어가거나 나가지 않는 것이 좋습니다. With 블록의 문이 실행되지만 With 또는 End With 문이 실행되지 않으면 프로시저를 종료할 때까지 개체에 대한 참조가 포함된 임시 변수가 메모리에 남아 있습니다.
이 예제는 With 문을 사용하여 단일 개체에 대해 일련의 문을 실행하는 방법을 보여줍니다. 개체와 해당 속성은 단순히 설명을 위해 사용된 일반적인 이름입니다.
With MyObject
.Height = 100 ' Same as MyObject.Height = 100.
.Caption = "Hello World" ' Same as MyObject.Caption = "Hello World".
With .Font
.Color = Red ' Same as MyObject.Font.Color = Red.
.Bold = True ' Same as MyObject.Font.Bold = True.
End With
End With
도움말 출처
With statement (VBA)
Office VBA reference topic
learn.microsoft.com
Using With statements (VBA)
Office VBA reference topic
learn.microsoft.com
'언어 참조' 카테고리의 다른 글
재귀 프로시저 만들기 (0) | 2023.08.06 |
---|---|
조건부 컴파일 이해 (0) | 2023.08.05 |
Do...Loop 문 (0) | 2023.08.05 |
For Each...Next 문 (0) | 2023.08.04 |
For...Next 문 (0) | 2023.08.04 |