1편에서 범위를 다뤘는데, Microsoft 도움말에 있는 예제를 하나 더 알아보겠습니다.
1. 3개 셀 선택
Sub Cbm_Value_Select()
'Set up the variables.
Dim rng As Range
'Use the InputBox dialog to set the range for MyFunction, with some simple error handling.
Set rng = Application.InputBox("Range:", Type:=8)
If rng.Cells.Count <> 3 Then
MsgBox "Length, width and height are needed -" & _
vbLf & "please select three cells!"
Exit Sub
End If
'Call MyFunction by value using the active cell.
ActiveCell.Value = MyFunction(rng)
End Sub
Function MyFunction(rng As Range) As Double
MyFunction = rng(1) * rng(2) * rng(3)
End Function
위 매크로는 선택된 범위의 셀 개수가 3이 아니라면 "길이, 너비와 높이가 필요하므로 셀 3개를 선택하세요"라는 메세지를 보여주고, 실행을 멈추며(Exit Sub)
선택된 셀의 개수가 3개면 MyFunction함수를 실행해서 세 개셀을 곱해서 MyFunction이라는 값을 반환하고, 현재 셀(ActiveCell)에 입력하는 것입니다.
아래와 같이 새 통합 문서를 생성한 다음 삽입 - 모듈 메뉴 또는 삽입 콤보박스를 눌러 모듈을 선택한 다음
오른쪽 코드 창에 위 코드를 붙여 넣습니다.
그리고, 엑셀 아이콘을 눌러 엑셀로 돌아간 다음 A1셀에 10, B1셀에 15, C1셀에 25를 입력하고, A3셀을 선택한 다음
개발도구 - 매크로를 누른 다음 매크로 이름에서 Cbm_Value_Select를 선택한 다음 실행하면
입력이란 창 제목에 Range라고 메세지가 표시되고, 입력 칸이 표시되는데
A1셀부터 C1셀까지 마우스로 끌어서 범위를 선택한 다음 확인 버튼을 누르면
A3셀에 3셀의 곱해진 값인 3,750이 입력됩니다.
3개 셀을 순서대로 rng(1), rng(2), rng(3) 범위 변수에 대입하는 것이 특이합니다.
2. 숫자 입력
Sub 숫자입력()
Dim num As Integer
num = Application.InputBox("숫자를 입력하세요", Type:=1)
ActiveCell = num
End Sub
위와 같이 서브 프로시저를 작성한 다음 B3셀을 선택하고,
숫자입력 매크로를 실행하고 숫자가 아닌 문자를 입력하고 확인 버튼을 누르면
"숫자가 잘못되었습니다"란 에러 메시지가 표시되므로 숫자가 아닌 것은 입력이 안됩니다. 확인 버튼을 누른 다음
숫자 234를 입력하고, 확인 버튼을 누르면 B3셀에 234가 입력됩니다.
3. 수식 입력
Sub 수식입력()
Dim formula As String
formula = Application.InputBox("수식을 입력하세요", "수식 입력", Type:=0)
ActiveCell = formula
End Sub
위와 같이 코드를 작성한 후 C3셀에 커서를 두고, 수식입력 매크로를 실행하면, 두번째 인수인 title을 입력했으므로 창 제목이 '수식 입력'으로 표시되고, '수식을 입력하세요'란 설명이 표시됩니다.
=2*pi()*5라고 입력하고 확인 버튼을 누르면
C3셀에 =2*pi()*5라는 수식이 입력되고, 값 31.41593이 표시됩니다. pi함수는 파이 값 3.141592입니다.
이 때 =을 입력하지 않고 2*pi()*5라고 입력하고 확인 버튼을 누르면 =은 들어가는데, 큰따옴표가 앞과 뒤에 붙어서 문자열로 입력됩니다.
매크로로 실행한 것은 Ctrl + Z(실행 취소)키를 눌러 되돌릴 수 없으므로 주의해야 합니다.
따라서, 실행 전에 저장한 후 매크로를 실행하는 것이 안전합니다.
'EXCEL - VBA' 카테고리의 다른 글
엑셀 VBA에서 셀 또는 범위 지정하기(2) - Cells (0) | 2022.10.31 |
---|---|
엑셀 VBA에서 셀 또는 범위 지정하기(1) - Range (0) | 2022.10.25 |
범위 등을 입력받는 Application.InputBox 메소드(1) (0) | 2022.10.20 |
매크로 기록으로 엑셀 VBA의 내부를 보다 (0) | 2022.10.17 |
엑셀의 유용함, 사용자 지정 함수 (2) | 2022.10.07 |