작업 범위 지정
셀의 좌표(Workbooks, Worksheets, Cells)
하나의 Worksheet에는 많은 셀(Cell)이 있습니다. 이러한 Cell들 중에서 어떠한 특정 Cell을 표현할 때에는 Cells(세로위치, 가로위치)의 형태로 표시됩니다. 여기서 세로위치나 가로위치는 1부터 그 위치까지의 순서로서, 예를 들어 셀 A1은 Cells(1,1), 셀 A2는 Cells(2,1), 셀 B1은 Cells(1,2) 등과 같이 표시됩니다.
특정한 Cell 지정하기
활성화된 Workbook의 활성화된 Worksheet에 있는 셀 A1에 입력된 내용을 읽어 오거나 무언가를 입력하려 할 때 Cell 위치를 알아야 합니다. Cell의 위치를 정확히 알려주려면 큰 개체부터 작은 개체 순으로 개체 사이에 마침표(.)를 찍어 다음과 같이 표시합니다.
Application.ActiveWorkbook.ActiveSheet.Cells(1,1)
여기서 마침표는 '...의' 또는 '...에 있는'으로 생각을 하면 편리합니다. 즉, 위의 VBA 코드는 EXCEL의 활성화된 워크북에 있는 활성화된 워크시트의 셀을 의미합니다.
그러나 그 셀이 당연히 EXCEL상에 있는 것일 테니 Application은 생략할 수 있고, 그 셀이 활성화된 Workbook에 있는 것이라면 역시 생략할 수 있으며, 그 셀이 역시 활성화된 Worksheet에 있는 것이라면 생략할 수 있어서, 그냥 Cells(1,1)이라고만 하여도 됩니다.
하지만 활성화된 상태가 아니라면 다음과 같이 괄호를 붙이고 따옴표 안에 이름을 사용하여 구분하여 표시를 해 주어야 합니다. 즉, Workbooks("판매관리").Worksheets("대구지역").Cells(1,1)으로 하는데, 역시 그 셀이 EXCEL상에 있는 것일 테니 맨 앞에 Application은 생략 가능합니다.
프로그래밍 창에서 모듈을 하나 열고 거기에 다음과 같이 써 보세요.
Sub 입력하기( )
ActiveCell.Value = "영자씨 사랑해"
End Sub
다 썼으면 EXCEL창으로 가서 아무 셀이나 하나 클릭하고 메뉴에서 [도구] - [매크로] - [매크로]를 하면 나오는 대화상자에 '입력하기'를 클릭하여 선택하고 확인을 누르면 클릭한 셀에 '영자씨 사랑해'라고 써집니다. 위의 예는 간단하지만, BASIC이 EXCEL의 개체를 이용하고 있는 것입니다. 즉, 등호(=) 우측의 내용을 좌측에다 입력하는데 그 좌측이 변수가 아니고 Cell이라고 하는 개체인 점이 다릅니다. 여기서 '.Value'는 영어 단어 그대로 '값'을 의미합니다. 왜 이러한 말을 덧붙여야 할까요?
Cell에 입력하라고 하니까 입력은 해야겠는데, Cell에 입력해야 할 것이 값을 입력하는 것 외에 여러 가지가 있습니다. 즉, 공식, 색깔, 글자 크기 등 여러 가지가 있기 때문에 그 중에서 값으로 입력하라고 컴퓨터에 알리는 말이 된다. 그러면 이번에는 프로그래밍 창으로 다시 가서 그 모듈의 아까 작성한 프로그램의 End Sub 아래에 다음과 같이 써 보세요. ActiveSheet는 안 써도 좋습니다. (안 쓰려면 다음의 마침표도 필요 없음)
도식화 할 시 아래와 같이 나타낼 수 있음.
- Application: 엑셀 전체를 나타냅니다.
- ActiveWorkbook: 현재 활성화된 워크북
- ActiveWorksheet: 현재 활성화된 워크시트
- Cells(세로, 가로): 특정 셀을 지정 (e.g., Cells(1,1)은 A1 셀을 의미)
- ActiveCell: 현재 활성화된 셀
- .Value: 셀의 값을 설정/읽기
- .ClearContents: 셀의 내용만 지우기
- ActiveWorksheet: 현재 활성화된 워크시트
- ActiveWorkbook: 현재 활성화된 워크북
- Code Examples:
- Input Example: ActiveCell.Value = "영자씨 사랑해"
- Clear Example: ActiveCell.ClearContents
'excel VBA' 카테고리의 다른 글
엑셀 VBA 개체, 속성, 메소드 (0) | 2023.08.30 |
---|---|
엑셀 Visual Basic 구성 (0) | 2023.08.30 |
엑셀의 구조 (0) | 2023.08.30 |
엑셀 VBA 날짜 시간 함수 (0) | 2023.08.30 |
엑셀 VBA 변수, 배열 및 선언하기 (0) | 2023.08.30 |
댓글