shlewislee.me

๐Ÿ“Ž ํ•œ์…€ ๋งคํฌ๋กœ๋กœ ์ผํ•˜๊ธฐ (2)

ํ•œ์…€์ด๋ž‘ ์—‘์…€์˜ ๋งคํฌ๋กœ๋Š” ๊ฑฐ์˜ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ์œ ์ผํ•œ ํฐ ์ฐจ์ด๋Š” ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ์…€์€ ์—๋Ÿฌ ๋ฌธ๊ตฌ๊ฐ€ ๋ชจํ˜ธํ•˜๊ณ , ๊ตฐ๋Œ€ ํŠน์„ฑ์ƒ ๊ฒ€์ƒ‰๋„ ํž˜๋“ค๋‹ค. ๋‹คํ–‰์ธ ์ ์€ ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์ผ  ์ƒํƒœ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๋ผ์ธ์„ ํ‘œ์‹œํ•ด์ค€๋‹ค๋Š” ์ ์ด๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์ผœ๋ฉด ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์†๋„๊ฐ€ ์ฒ˜์ ˆํ•˜๊ฒŒ ๋А๋ ค์ง€์ง€๋งŒ, ๊ฐ€์žฅ ์ข‹์€ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•์ด๋‹ค.

Sub main()

VBA๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“ˆ ๋‚ด์˜ Sub๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ๋œ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ” ์ค‘ ์ถ”๊ฐ€ํ•˜๊ณ ์‹ถ์€ ๋ฌธ์„œ์— ์˜ค๋ฅธ์ชฝ ํด๋ฆญ์„ ํ•˜๋ฉด ๋ชจ๋“ˆ ์ถ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“ˆ ๋‚ด์—๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ Sub ํ”„๋กœ์‹œ์ ธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

1Sub main()
2    'Your code here
3End Sub

Sub ์•ž์— Private๊ณผ Public์„ ๋ถ™์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ• ์ง€ ์•„๋‹์ง€๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ๋Š” Private์„ ์‚ฌ์šฉํ•  ์ผ์ด ์—†์—ˆ๊ณ , ์ถ”๊ฐ€๋กœ ๋ถ™์—ฌ์ฃผ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Public์ด ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ƒ๋žตํ•˜์˜€๋‹ค. Sub์˜ ๋์—๋Š” ๊ผญ End Sub๊ฐ€ ๋ถ™์–ด์ค˜์•ผํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ํ•˜๋‚˜์˜ Sub๋ฅผ Sub ํ”„๋กœ์‹œ์ ธ๋ผ๊ณ  ํ•˜๊ณ ,

1Sub main2()
2    Call main
3End Sub

๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ๋งŒ๋“ค์–ด์ง„ Sub ํ”„๋กœ์‹œ์ ธ๋ฅผ ์œ„์™€๊ฐ™์ด ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์‹คํ–‰๋ฐฉ๋ฒ•

Sub ํ”„๋กœ์‹œ์ ธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ž…๋ ฅ - ์–‘์‹๊ฐœ์ฒด - ๋ช…๋ น๋‹จ์ถ”๋ฅผ ํ†ตํ•ด VB์Šคํƒ€์ผ์˜ ๋ฒ„ํŠผ์„ ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ผ๋ฐ˜ ๋„ํ˜•์— ๋งคํฌ๋กœ๋ฅผ ์ง€์ •ํ•ด์„œ(๋„ํ˜•์„ ์šฐ์ธกํด๋ฆญํ•˜๋ฉด ๋งคํฌ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.) ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋ฏธ๊ด€์ƒ ๋„ํ˜•์ด ํ›จ์”ฌ ๋‚ซ๊ธฐ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋„ํ˜•์— ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

๋””๋ฒ„๊ทธ์ค‘์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด ํ•œ์…€์—์„œ๋Š” ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ๊ผญ ์ข…๋ฃŒํ•œ ํ›„ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค. ํŠนํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด ํŒ…๊ฒจ๋ฒ„๋ฆฌ๋Š” ์ผ์ด ๋งŽ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ์—์„œ๋Š” ์ผ๋ฐ˜ IDE์ฒ˜๋Ÿผ F5๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Sub ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•˜๊ธฐ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ชจ๋“ˆ์—์„œ ์–ด๋–ค Sub ํ”„๋กœ์‹œ์ ธ๋ฅผ ์‹คํ–‰ ํ•  ๊ฒƒ์ธ์ง€ ์„ ํƒํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

MsgBox()

Python์˜ print()์ฒ˜๋Ÿผ, ์–ด๋А๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ํŽธํ•œ ๋ฐฉ๋ฒ•์€ MsgBox()์ด๋‹ค. ๊ด„ํ˜ธ์•ˆ์˜ ๋‚ด์šฉ์„ ์•Œ๋ฆผ์ฐฝ์œผ๋กœ ๋„์›Œ์ค€๋‹ค.

1Sub main()
2    MsgBox("Hello, World!")
3End Sub

msgbox

์ด๋ ‡๊ฒŒ ์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค๊ฐ€ ๋œฌ๋‹ค. ์ด MsgBox()์—๋„ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ์ง€๊ธˆ์€ ๋„˜์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ Range ๊ฐ์ฒด

์—ฌํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ, VBA์—๋Š” ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์—ญ์‹œ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์—๋Š” integer, long, boolean, string ๋“ฑ์„ ๋‹ด์„ ์ˆ˜๋„ ์žˆ๊ณ , ๊ฐ์ฒด(object)๋ฅผ ๋‹ด์„ ์ˆ˜๋„ ์žˆ๋‹ค. VBA๋Š” ๊ฐ์ฒด์ง€ํ–ฅํ˜• ์–ธ์–ด์ธ๋งŒํผ, ๊ฐ์ฒด์˜ ๊ฐœ๋…์ด ์ค‘์š”ํ•˜๋‹ค. ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๋ธ”๋กœ๊ทธ์— ์ž˜ ์„ค๋ช…๋˜์–ด์žˆ๋‹ค.

ํ•œ์…€ ๋ฌธ์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์›Œํฌ๋ถ(ํŒŒ์ผ) - (์›Œํฌ)์‹œํŠธ - ๋ฒ”์œ„ - ์…€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค(๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฒ”์œ„์™€ ์…€์€ ํฌ๊ฒŒ ๊ตฌ๋ถ„์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค). ์ด๋“ค์€ ๋ชจ๋‘ ๊ฐ์ฒด(object)์ด๋‹ค. Range๋Š” ๊ทธ์ค‘ ๋ฒ”์œ„์˜ ๊ฐ์ฒด์ธ๋ฐ, ๋‹ค๋ฅธ ์›Œํฌ๋ถ์˜, ๋‹ค๋ฅธ ์‹œํŠธ์˜ ์…€ ๋ฒ”์œ„๊นŒ์ง€๋„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด ๋ฒ”์šฉ์„ฑ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚˜๋‹ค. ๊ธฐ๋ณธ์ ์ธ Range์˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ๊ฐ™๋‹ค:

1Sub main()
2    Dim example as Range
3    Dim exampleNum
4
5    exampleNum = 0
6    Set example = Range("[filename.xlsx]Sheet1!A1")
7End Sub

Dim์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ• ๋•Œ ์“ฐ์ด๋Š”๋ฐ, as Range๋ฅผ ๋ถ™์—ฌ์คŒ์œผ๋กœ์„œ ์•ž์˜ ๋ณ€์ˆ˜๊ฐ€ Range ๊ฐ์ฒด์ž„์„ ๋ช…์‹œํ•œ๋‹ค. Set์€ ๊ฐ์ฒด(object)๋ฅผ ๋ณ€์ˆ˜์— ๋ถ€์—ฌํ• ๋•Œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด, Set์€ ๊ตณ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

example ๋ณ€์ˆ˜๋Š” ์ด์ œ filename.xlsx์˜ Sheet1 ์‹œํŠธ์˜ A1์…€์„ ๊ฐ€๋ฅดํ‚ค๊ณ ์žˆ๋‹ค. ๋ณ€์ˆ˜์— ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ Range()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 1Sub main()
 2    Dim example as Range
 3    Dim exampleNum
 4
 5    exampleNum = 0
 6    Set example = Range("[filename.xlsx]Sheet1!A1")
 7
 8    MsgBox(example.Value) 'A1 ์…€์˜ ๊ฐ’์„ MsgBox๋กœ ์ถœ๋ ฅ
 9    
10    MsgBox(Range("[filename.xlsx]Sheet1!A1")) '์ถœ๋ ฅ๊ฐ’์ด ๊ฐ™๋‹ค.
11End Sub

Method์™€ Properties

์ด์ฒ˜๋Ÿผ Range ๊ฐ์ฒด๋Š” ์—‘์…€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ/์ˆ˜์ •ํ• ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. Range์—๋Š” ๋งŽ์€ Method๋“ค๊ณผ Properties๋“ค์ด ์žˆ๋Š”๋ฐ, Method๋Š” Range์— ๋Œ€ํ•œ ํ–‰๋™(Behavior)๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ, Range์— ๋ณ€ํ™”๋ฅผ ์ค„๋•Œ ์‚ฌ์šฉ๋˜๊ณ , Property๋Š” ํ•ด๋‹น Range ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ก€๋กœ Properties์ค‘ ํ•˜๋‚˜์ธ .Value๋Š” ํ•ด๋‹น Range์˜ ํŠน์„ฑ์ธ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ๋œ๋‹ค. Method์ค‘ ํ•˜๋‚˜์ธ .Select๋Š” ํ•ด๋‹น Range๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์—ฌํƒ€ ๊ฐ์ฒด์ง€ํ–ฅํ˜• ์–ธ์–ด์ฒ˜๋Ÿผ, Method๋Š” ๋’ค์— ๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด๊ฒŒ๋˜๊ณ , Properties๋Š” ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

 1Sub main()
 2    Dim example as Range
 3    Dim exampleNum
 4
 5    exampleNum = 0
 6    Set example = Range("[filename.xlsx]Sheet1!A1")
 7
 8    MsgBox(example.Row) 'Properties์ค‘ ํ•˜๋‚˜์ธ Row(ํ–‰ ๋ฒˆํ˜ธ)๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
 9
10    example.Select() 'A1์…€์„ ์„ ํƒํ•œ๋‹ค. ๊ด„ํ˜ธ๊ฐ€ ๋ถ™๋Š”๋‹ค. 
11End Sub
This article is part of a series: ํ•œ์…€ ๋งคํฌ๋กœ

Reply to this post by email โ†ช