본문 바로가기
IT/워드, 엑셀 VBA 매크로

[MS 워드 VBA 매크로] 커서 이동 (Selection.Move)

by The Raven 2020. 11. 14.

워드에서 매크로를 이용하여 커서(입력 포인트)를 이동하려면 Selection.Move 메서드를 사용하면 됩니다.

Selection.Move 메서드

Selection 개체에 포함되어 있는 Move 메서드는 키보드의 입력 커서를 지정한 개수의 단위(unit)만큼 이동합니다. 이때 블록 지정이 되어 있다면 블록 지정을 해제됩니다.

메서드가 수행된 후에는 Long 값을 반환합니다. 이동에 성공했을 때에는 이동한 단위의 개수를 반환하고, 이동에 실패했을 때에는 0을 반환합니다.

Move 메서드를 사용하기 전에 Collapse 메서드를 사용하면 선택 영역을 취소하는 방향을 제어할 수 있다. 만일 현재 range 또는 selection이 unit의 중간에 위치한 경우 해당 unit의 시작 또는 끝으로 이동하는 것도 unit 한 개만큼 이동한 것으로 간주합니다.

Syntax

Selection.Move(Unit, Count)

Parameter

이 메서드는 다음의 두 가지 파라미터를 가집니다.

이름 필수/옵션 데이터 타입 설명
Unit 옵션 Wdunits 입력 지점을 이동하는 단위
Count 옵션 Variant - 입력 지점이 이동하는 단위의 개수. (Default 값: 1) 
- 양수이면 선택 영역의 끝에서 지정된 수의 Unit 만큼 문서의 뒤로 이동한다.
- 음수인 경우에는 선택 영역의 앞에서 설정된 수의 Unit 만큼 문서의 앞으로 이동한다.

※ Unit은 WdUnits이라는 enum 값으로 지정하며, 아래 표의 값 중 하나를 지정할 수 있습니다. (출처)

Example

아래의 예제는 현재 커서가 문서 본문(wdMainTextStory)에 위치한 경우, 커서를 두 단어만큼 뒤로 이동하는 매크로입니다. 만일 커서가 문서의 거의 끝 부분에 있어 두 단어만큼 이동하지 않은 경우(문서의 끝에 도달한 경우)에는 팝업 메시지를 띄우게 됩니다.

If Selection.StoryType = wdMainTextStory Then
    wUnits = Selection.Move(Unit:=wdWord, Count:=2)
    If wUnits < 2 Then _
    MsgBox "Selection is at the end of the document"
End If

Reference

[1] Microsoft의 VBA 레퍼런스 사이트 (Word.selection.move)

 

반응형

댓글