기초부터 실전까지 VBA 엑셀20 - with 구문

IT 관련 지식/VBA 공부|2019. 11. 13. 08:00
반응형
728x170

<VBA 엑셀20 - with>

 

이제부터는 조금 어려운 단계의 프로그래밍을 배워보도록 하겠습니다.

 

코딩에서 나쁜 행동중 하나는 바로 반복입니다.

 

우리는 반복을 피하기 위하여 For, Do~Loop 같은 반복문을 배웠습니다.

 

하지만 이번에는 코딩을 더욱 간략하게 하는 With 이라는 구문에 대해 배워보겠습니다.

 


1. VAB With의 기본형

 

다음은 With의 기본 사용법입니다.

 

With 오브젝트
  .오브젝트 = 값 
  .메소드 
End With

 

300x250

아마 이렇게만 보시면 이해가 잘 가지않으리라 생각합니다.

 

그래서 바로 예제로 설명을 해보겠습니다.

 


2. VBA With의 예문

 

다음은 결과가 같은 예문을 한쪽은 With구문을 사용하지 않고

 

다른 한쪽은 With 구문을 사용하여 표현해보겠습니다.

 

아래의 코딩은 With 구문을 사용하지 "않은" 코딩입니다.

Worksheets(1).Cells(1, 1) = 1
Worksheets(1).Cells(2, 1) = 2

 

다음은 With 구문을 "사용한" 예문입니다.

With Worksheets(1)
  .Cells(1, 1) = 1
  .Cells(2, 1) = 2
End With

 

둘 다 Sheet(1)의 "A1", "B1"에 각각 "1", "2"를 넣는 코딩이지만

 

그 과정이 조금 다릅니다.

 

위의 예문의 경우 조금 짧기 때문에 With 구문을 사용한 예문이 좀 더 복잡하게 보입니다.

 

그럼 실제로 사용하는 예를 한번 보겠습니다.

With Range("A1").Font
  .Bold = True
  .Color = vbRed
  .Size = 12
End With

이번에는 좀 더 확 와닿을거라 생각합니다.

 

우리는 With Range("A1").Font만 보고 이제부터 "A1"의 Font에 대해 뭔가를 설정할 것이라는 것을 알 수 있습니다.

 

그리고 그 설정은 Bold / Color / Size라는 것도 알 수 있습니다.

 

이 처럼 With 구문을 사용할 때에는 한개의 오브젝트(Range("A1").Font)에 여러개의 매소드(.Bold 등)를 사용할 때 효과적이라는 것을 알 수 있습니다.

 

또한 With 구문을 사용할 경우 프로그래밍의 처리속도도 빨라지게 됩니다.

 

단, 사용하는 매소드가 적은데 With 구문을 사용할 경우 오히려 가독성이 떨어지게 됩니다.

 

또한 With 구문을 사용했을 경우에는 마지막에 "End With"을 반드시 적어야합니다.


오늘은 여기까지 하겠습니다.

 

다음에는 붙여넣기의 새로운 방법에 대해 알아보겠습니다.

(보니까 포스팅 하는 것을 까먹었더라고요....)

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀15 - 입력 상자 InputBox

IT 관련 지식/VBA 공부|2019. 11. 5. 08:38
반응형
728x170

<실전까지 VBA 엑셀15 - 입력 상자 InputBox>

 

이번에는 텍스트를 입력할 수 있는 입력 상자에 대해 알아보겠습니다.

 

메세지 박스가 이용자에게 경고, 알림을 하기 위한 것이었다면

 

입력 상자는 사용자로부터 정보를 얻기 위해 사용합니다.

 

이것을 배우고 나면 이제 여러분은 수치를 입력하고

 

VBA 매크로를 통해 결과를 받아볼 수 있는 프로그램을 만들 수 있게 됩니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!


1. 입력상자의 개념

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

 

각 구문의 설명은 다음과 같습니다.

 

prompt 반드시 지정합니다.
대화 상자에서 메시지로 표시되는 문자열을 나타내는 문자열 식을 지정합니다.
명명 된 인수 prompt로 최대 길이는 1 바이트 문자로 1,024 자입니다.
title 선택 사항입니다.
대화 상자의 제목 표시 줄에 나타나는 문자 식을 지정합니다.
명명 된 인수 title을 생략하면 제목 표시 줄에는 응용 프로그램 이름이 표시됩니다.
default 선택 사항입니다.
사용자가 아무것도 입력하지 않을 경우 텍스트 상자에 기본값으로 표시하는 문자열 식을 지정합니다.
명명 된 인수 default를 생략하면 텍스트 상자에 아무것도 표시되지 않습니다.
xpos 선택 사항입니다.
화면의 왼쪽 가장자리에서 대화 상자의 왼쪽 가장자리 사이의 수평 거리를 twip 단위로 나타내는 수식을 지정합니다.
명명 된 인수 xpos를 생략하면 대화 상자는 수평 방향에 대해 화면의 중앙 위치에 배치됩니다.
ypos 선택 사항입니다.
화면 상단에서 대화 상자의 상단까지의 수직 거리를 twip 단위로 나타내는 수식을 지정합니다.
명명 된 인수 ypos 생략하면 대화 상자는 수직에 화면의 상단으로부터 약 1/3 위치에 배치됩니다.
helpfile 선택 사항입니다.
대화 상자에 상황에 맞는 도움말을 설정하기 위해 사용하는 도움말 파일의 이름을 나타내는 문자열 식을 지정합니다.
이 인수는 표시하는 대화 상자의 설명을 도움말을 사용하여 볼 때 지정합니다.
명명 된 인수 helpfile을 지정한 경우 명명 된 인수 context도 지정해야합니다.
context 선택 사항입니다.
도움말 항목에 지정된 컨텍스트 번호를 나타내는 수식을 지정합니다.
명명 된 인수 context를 지정하면 명명 된 인수 helpfile도 지정해야합니다.

위에서 주로 사용되는 것은 prompt, title, default 이렇게 3개입니다.

 

입력 상자의 경우 사용자가 입력한 값을 받아야하기 때문에 그에 따른 변수가 필요합니다.

 

이는 다음 예문에서 살표보겠습니다.

300x250

2. InputBox의 예문

먼저 InputBox의 가장 기본적인 사용법부터 시작하겠습니다.

 

① VBA InpuBox 기본 활용법

Sub inputbox1()

Dim strIn As String
strIn = InputBox("값을 입력해주세요")

End Sub

 

결과

이 입력상자에 무언가를 입력할 경우

 

그 값이 위에서 지정한 strln이라는 변수 안으로 들어간다.


② VBA InputBox 응용 활용법

Sub inputbox2()

Dim strIn As String
strIn = InputBox("값을 입력해주세요" & vbLf & "숫자만 가능합니다.", "Only Number", "10")

End Sub

 

결과

 

이번에는 입력 상자의 텍스트에 줄바꿈과 Title 변경, 초기값을 입력해봤습니다.

 

지금은 "숫자만 가능합니다."라고 써놨어도 아무거나 입력 가능하지만

 

나중에 진짜 숫자만 입력 가능하게 하는 방법도 하나씩 알려드리도록 하겠습니다.

 


이번에는 VBA에서 InputBox에 대해 알아봤습니다.

 

다음에는 VBA를 이용하여 셀을 다루는 법에 대해 알아보겠습니다! 

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

반응형

댓글()

기초부터 실전까지 VBA 엑셀10 - 마지막 행 얻기(End)

IT 관련 지식/VBA 공부|2019. 10. 25. 09:51
반응형
728x170

< VBA 엑셀10 - 마지막 행 얻기(End)>

 

데이터의 마지막 셀로 갈 수 있는 방법중 하나인 End에 대해서 알아보겠습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

 

먼저 프로그래밍을 하기 전에 다음과 같은 엑셀 시트를 준비해야합니다.

 

A열에서는 첫 번째 줄부터 10번째 줄까지 연속적으로 숫자가 입력되어 있습니다.

 

B열에서는 첫 번째 줄부터 숫자가 이어지다가 5번째 줄에서 한번 끊기게 됩니다.

 

이번에는 "A1"셀을 선택한 후에 Ctrl+↓(방향키 아래)를 눌러보시기 바랍니다.

그럼 아래와 같은 그림처럼 "A10" 셀이 선택되어져 있는 모습일거라 생각합니다.

이번에는 "B1"를 선택한 후 똑같이 Ctrl+↓(방향키 아래)을 눌러보시기 바랍니다.

"A1"와 다르게 네 번째 행에서 선택이 멈춥니다.

Ctrl+"방향키"의 기능은 연속적인 데이터가 있을 때 그 방향의 마지막 데이터로 커서를 이동시켜줍니다.

 

이번에는 이것을 코딩으로 표현할 수 있는 방법에 대해 이야기 해보겠습니다.

 

(위에서 만든 데이터는 그대로 사용할 예정이니 놔두시면됩니다.)

 

또한 가능한한 이제부터 VBA에서 셀을 선택할 때는 Cells를 사용하겠습니다.

300x250

 


1. End 사용하기

 

Cells (1, 1) .End (xlDown)

 

위에서 했던 Ctrl+↓(방향키 아래)와 같은 기능을 가진 코드입니다.

 

밑으로 향하는 xlDown 이외에도 다음과 같은 기능을 사용할 수 있습니다.

 

xlUp : ↑ 위로
xlDown : ↓ 아래로
xlToLeft : ← 왼쪽
xlToRight : → 오른쪽

 

다음과 같이 코딩을 하면 위에서 했던 것이랑 똑같은 결과를 얻을 수 있습니다.

Sub row1() 

    Dim a As String, b As String 
     
    a = Cells(1, 1).End(xlDown) 
     
    Cells(11, 1) = a 
     
    b = Cells(1, 2).End(xlDown) 
     
    Cells(11, 2) = b 
     
End Sub

약간 해석을 하자면 

① 문자열을 받을 수 있는 변수 a, b를 만듭니다

② "A1"의 마지막 행에 있는 데이터를 a에 저장합니다.

③ "A11"에 저장한 a 데이터를 입력합니다.

④ "B1" 또한 같은 내용을 반복합니다.

 

 

 

 

 

<결과>

 

위에서 했던거 처럼 같은 결과를 얻을 수 있습니다.

 


2. 마지막 행의 수 얻기 - .Row

 

마지막으로 그 행의 숫자를 얻을 수 있는 코드를 알려주고 끝내겠습니다.

 

위에서 배웠던

 

Cells (1, 1) .End (xlDown)

 

이거에 .Row를 붙여서 

 

Cells (1, 1) .End (xlDown).Row

 

라고 하면 끝입니다.

 

아래와 같이 프로그래밍을 할 경우 결과는 위와 동일하지만

Sub row2()

    Dim a As String, b As String
    
    a = Cells(1, 1).End(xlDown).Row
    
    Cells(11, 1) = a
    
End Sub

여기서 "A11"에 출력되는 "10은 "A10" 셀에 있는 "10"이 아닙니다.

 

A"10"을 의미하는 10입니다.

 

즉, 행의 숫자를 얻을 수 있는게 

 

Cells (1, 1) .End (xlDown).Row

 

입니다.

 


더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

오늘은 여기까지 하겠습니다!

반응형

댓글()

기초부터 실전까지 VBA 엑셀9 - 반복문 Do ~ Loop

IT 관련 지식/VBA 공부|2019. 10. 24. 09:29
반응형
728x170

<VBA 엑셀9 - 반복문 Do ~ Loop>

 

이번에는 또 다른 반복문인 Loop에 대해 알아보겠습니다.

 

For 반복문과 Do 반복문의 차이점을 설명하자면

 

For 반복문 : 지정 횟수만큼 반복한다.

 

Do 반복문 : 주어진 조건만큼 반복한다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

 


1. Do 반복문의 기본 형태

 

Do [{While | Until} condition]
  [statements]
  [Exit Do]
  [statements]

Loop

 

각 구문의 뜻을 설명하면 아래와 같습니다.

 

condition 선택 사항입니다.
참 (True) 또는 거짓 (False)을 평가하는 수식 또는 문자열 식을 지정합니다.
인수 condition 값이 Null 인 경우, 인수 condition은 거짓 (False)로 간주됩니다.
statements 인수 condition이 참 (True) 인 동안 또는 인수 condition이 참 (True)로 될 때까지 반복 실행되는
여러 행의 문을 작성합니다.

 

condition에서 사용할 수 있는 조건의 경우 아래와 같습니다.

 

비교 연산자 의미
= 같음
<> 같지 않음
> 초과
> = 이상
< 미만
<= 이하
논리 연산자 의미
And 논리적
Or 논리합

 

다음 예문을 통해 좀 더 상세히 알아보겠습니다.

 

참고로 기초 레벨의 코딩의 경우 코드를 올리지 않겠습니다.

 

왜냐하면 직접 코딩을 하면서 익히는게 더 빨리 외워지고 프로그래밍을 하는 맛이 있거든요 ㅎㅎ


2. Do 조건문의 예시

 

Sub Loop1()
    Dim i
    i = 1
    Do While i <= 10
        Cells(i, 1) = 1
        i = i + 1
    Loop
End Sub

 

위의 VBA 코딩을 실행시켜보면 아래와 같은 결과가 나옵니다.

위에서 While의 의미를 설명하자면

 

300x250

 

<"i"가 10이하일 "동안" 계속 반복해라> 라는 의미입니다.

 

결과는 같지만 조금 다른 예를 한번 더 보겠습니다.


Sub Loop2()

    Dim i
    i = 1
    Do Until i > 10
        Cells(i, 1) = 1
        i = i + 1
    Loop
End Sub

 

이를 실행해보면 위와 똑같은 결과가 나오게 됩니다.

 

여기서 Until의 뜻은

 

<"i"가 10을 넘을 때"까지" 계속해라>라는 의미입니다.

 

뭔가 차이점이 느껴지시나요? ㅎㅎ

 

사실 직접 VBA 프로그래밍을 할 여러분들은 While이나 Until 중 하나만 중점적으로 사용해도 무방합니다.

 


3. Exti Do

 

마지막으로 Loop 반복문을 탈출하는 코딩에 대해 알아보고 마치겠습니다.

 

For 반복문과 마찬가지로 Loop 반복문 또한 탈출하는 코딩이 있습니다.

 

이번 에는 아래와 같이 VBA 코딩을 해봅니다.

 

Sub Loop3()

    Dim i
    i = 1
    Do Until i > 10
        Cells(i, 1) = 1
        i = i + 1

        Exit Do
    Loop
End Sub

 

이를 실행하면 그 결과는 아래와 같이 됩니다.

 

한번만 실행하고 Do ~ Loop 반복문을 끝내는 모습입니다.

 


이것으로 반복문에 대한 설명은 모두 끝났습니다.

 

다음에는 또 다른 수업으로 찾아 뵙겠습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

반응형

댓글()