IT/Excel VBA

[Excel VBA] VBA 디버깅

chef. setori🐹 2022. 1. 13. 11:42
λ°˜μ‘ν˜•

λ°˜κ°‘μŠ΅λ‹ˆλ‹€. :-)

 

 

 

μ˜€λŠ˜μ€ VBA ν”„λ‘œκ·Έλž˜λ°μ—μ„œ

 

κ°€!μž₯! μ€‘μš”ν•˜λ‹€κ³  말할 수 μžˆλŠ”

 

λ””λ²„κΉ…ν•˜λŠ” 방법에 λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 디버깅(Debug)은 ν•„μˆ˜μž…λ‹ˆλ‹€.

 

 

μ–΄λ– ν•œ μ‘°κ±΄μ΄λ‚˜ λ°˜λ³΅μ„ ν•˜κ²Œ 되면,

 

λ³€μˆ˜μ˜ 값을 ν™•μΈν•˜μ§€ λͺ»ν•  λ•Œλ‚˜

 

μ›ν•˜λŠ” 값이 λ‚˜μ˜€μ§€ μ•Šμ•˜μ„ λ•Œ

 

확인할 수 μžˆλŠ” μœ μΌν•œ 방법이 λ””λ²„κΉ…μž…λ‹ˆλ‹€!

 

 

 

 

ν•˜λ‚˜μ˜ μ˜ˆμ‹œλ‘œ 동전 κ΅ν™˜ ν”„λ‘œκ·Έλž¨μ„

 

λ””λ²„κΉ…ν•˜λŠ” 과정을 μ‚΄νŽ΄λ³΄κ³ μž ν•©λ‹ˆλ‹€!

 

 

 

 

↓ 기초적인 μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μŒ κ²Œμ‹œλ¬Όμ„ μ°Έκ³ ν•΄μ£Όμ„Έμš”! ↓

 

https://setori-dev.tistory.com/26

 

[μ•Œκ³ λ¦¬μ¦˜][κ±°μŠ€λ¦„λˆ] 동전 κ΅ν™˜κΈ°πŸ’° λ§Œλ“€κΈ°

λ°˜κ°‘μŠ΅λ‹ˆλ‹€ :) μ˜€λŠ˜μ€ μΌμƒμƒν™œμ—μ„œ ν•œ λ²ˆμ―€μ€ μ‚¬μš©ν•΄λ³΄μ•˜λ˜ λ™μ „κ΅ν™˜κΈ° μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ μž ν•©λ‹ˆλ‹€! ν”νžˆ 놀이곡원 λ½μ»€λ‚˜, 문방ꡬ에 μžˆλŠ” 뽑기λ₯Ό ν•˜κΈ°μœ„ν•΄μ„œ 지폐λ₯Ό λ™μ „μœΌλ‘œ κ΅ν™˜μ„

setori-dev.tistory.com

 

 

↓ μ‹€μŠ΅ 예제 파일↓

VBA디버깅_μ‹€μŠ΅.xlsm
0.02MB

 

 

 


 

 

동전 κ΅ν™˜ ν”„λ‘œκ·Έλž¨

 

돈 κΈˆμ•‘μ„ μž…λ ₯ν•˜λ©΄ λ‹¨μœ„λ³„λ‘œ λ³€ν™˜ν•˜λŠ” ν”„λ‘œκ·Έλž¨

 

 

μ—‘μ…€ μ‹œνŠΈ ν™”λ©΄μ—μ„œ [문제1] λ²„νŠΌμ„ ν΄λ¦­ν•œλ‹€.

 

 

였λ₯Έμͺ½ 마우슀 클릭 ν›„, 맀크둜 지정을 ν΄λ¦­ν•œλ‹€.

 

 

μ§€μ •λœ 맀크둜 νŽΈμ§‘μ„ ν΄λ¦­ν•œλ‹€.

 

 

VBA창으둜 μ΄λ™λœ 것을 λ³Ό 수 μžˆλ‹€.

 

 

 
 
 

λ‹€μŒ 문제 ν•¨μˆ˜μΈ 문제1_Click() 디버깅을 μ‹œμž‘ν•˜λ €λ©΄,

 

단좕킀인 F8을 ν΄λ¦­ν•˜κ±°λ‚˜

 

[디버그] νƒ­μ˜ ν•œ 단계씩 μ½”λ“œ 싀행을 ν΄λ¦­ν•˜λ©΄

 

 

(μ‹€ν–‰νŒŒμΌμ—μ„œλŠ” 문제1둜 ν‘œν˜„λ˜μ–΄μžˆλ‹€.)

λ‹€μŒκ³Ό 같이 ν•¨μˆ˜μ— λ…Έλž€μƒ‰μœΌλ‘œ ν‘œμ‹œκ°€

 

된 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

 

 


 

λ³€μˆ˜ 쑰사식에 μΆ”κ°€ν•˜κΈ°

 

 

λ™μ „κ΅ν™˜κΈ° ν”„λ‘œκ·Έλž¨μ€

 

c10 ~ c500은 λ™μ „μ˜ λ‹¨μœ„μ΄κ³ 

 

remain은 λ™μ „μ˜ λ‹¨μœ„λ‘œ λ‚˜λˆ μ£ΌλŠ” λ³€μˆ˜μž…λ‹ˆλ‹€.

 

 

디버깅을 톡해 remain λ³€μˆ˜μ— μ‹€μ‹œκ°„μ˜ κΈˆμ•‘μ„ ν™•μΈν•˜λ©΄μ„œ

 

λ™μ „μ˜ λ‹¨μœ„λ‘œ λ³€ν™˜ν•˜λŠ” 과정을 보고자 ν•©λ‹ˆλ‹€.

 

 

 

λ¨Όμ €, remainμ—λŠ”

 

κ΅ν™˜ν•  κΈˆμ•‘μΈ 888원이 μž…λ ₯ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.

 

 

이λ₯Ό VBA λͺ¨λ“ˆ μ°½μ—μ„œ 보렀면 λ‹€μŒκ³Ό 같이 remain을 쑰사식에 μΆ”κ°€ν•©λ‹ˆλ‹€.

μ½”λ“œμ—μ„œ remain λ³€μˆ˜λ₯Ό 더블클릭 ν•œ ν›„, 였λ₯Έμͺ½ 마우슀λ₯Ό ν΄λ¦­ν•˜λ©΄ λ‹€μŒκ³Ό 같은 화면이 λ‚˜μ˜¨λ‹€.

 

확인 λ²„νŠΌμ„ ν΄λ¦­ν•œλ‹€.

 

 

μΆ”κ°€ν•˜λ©΄ λ‹€μŒκ³Ό 같이

λͺ¨λ“ˆ ν•˜λ‹¨μ— 쑰사식이 μƒκΈ°λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

λ™μΌν•˜κ²Œ c10 ~ c500 λ³€μˆ˜λ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

일일이 μΆ”κ°€ν•˜μ§€ μ•Šκ³  λ³€μˆ˜λ₯Ό μ‘°μ‚¬μ‹μœΌλ‘œ λ“œλž˜κ·Έν•΄λ„ μΆ”κ°€κ°€ λ©λ‹ˆλ‹€!

 

λ˜ν•œ μ •μˆ˜ν˜• λ³€μˆ˜ λͺ¨λ‘ 0으둜 μ΄ˆκΈ°ν™” 된 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

[디버그]μ—μ„œ ν•œ 단계씩 μ½”λ“œ μ‹€ν–‰κ³Ό ν”„λ‘œμ‹œμ € λ‹¨μœ„ 싀행이 μžˆλŠ”λ°,

차이점은 ν•¨μˆ˜ λ‚΄μ—μ„œ ν˜ΈμΆœν•˜κ³  μžˆλŠ” ν•¨μˆ˜λ‘œ λ“€μ–΄κ°ˆ κ²ƒμΈμ§€μ˜ μ°¨μ΄μž…λ‹ˆλ‹€.

 

 

 

 

 


 

ν•œ 쀄씩 디버깅 ν•˜κΈ° (F8)

 

 

 

F8을 ν΄λ¦­ν•˜λ©°

ν•œ 쀄씩 디버깅을 μ‹œμž‘ν•˜λ©΄

 

쑰사식 μ°½μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ 값이 λ³€ν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

λ˜ν•œ λ³€μˆ˜ 뢀뢄에 마우슀λ₯Ό κ°€κΉŒμ΄ λŒ€λ©΄ μ‹€μ‹œκ°„μœΌλ‘œ 값을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

이 뢀뢄을 λ””λ²„κΉ…ν•˜λ©΄

 

λ‹€μŒκ³Ό 같이 λ³€μˆ˜μ˜ 값이 바뀐것을 λ³Ό 수 μžˆλ‹€

 

 

 

μ°¨λ‘€λ‘œ F8을 ν΄λ¦­ν•˜λ©΄ λ‹€μŒ μ€„λ‘œ λ„˜μ–΄κ°€λŠ”λ°,

 

 

μ‹€μ‹œκ°„μœΌλ‘œ λ³€μˆ˜μ— μžˆλŠ” 값이 바뀐닀.

 

 

 

 

remainμ—λŠ” 남은 κΈˆμ•‘μ΄ μ €μž₯되고, λ‹€μŒ λ‹¨μœ„λ‘œ λ³€ν™˜λ  λ•Œ λ‹€μ‹œ μ‚¬μš©λœλ‹€.

 

 

 

 

 

 

 

 

 

 


 

ν•„μš”ν•œ λΆ€λΆ„λ§Œ 디버깅 ν•˜κΈ° (F9)

 

 

λ§Œμ•½ μ½”λ“œκ°€ κΈΈμ–΄μ§ˆ 경우,

 

μœ„μ²˜λŸΌ ν•œμ€„μ”© λ””λ²„κΉ…ν•˜κΈ° μ–΄λ €μšΈ λ•Œμ—λŠ”

 

쀑단점을 μ„€μ •ν•˜μ—¬ 디버깅을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

 

쀑단점은

 

F9λ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜,

 

μ‚¬μ΄λ“œλ°”λ₯Ό ν΄λ¦­ν•˜λ©΄ λ‹€μŒκ³Ό 같이 λΆ‰μ€μƒ‰μœΌλ‘œ 섀정이 λ©λ‹ˆλ‹€.

 

 

 

쀑단점이 섀정이 되면

 

디버깅 μ‹œμž‘(β–Ά)을 ν΄λ¦­ν•˜μ˜€μ„ λ•Œ,

 

μ€‘λ‹¨μ μ—μ„œ λ©ˆμΆ”κ³  값을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

λ‹€μŒκ³Ό 같이 쀑단점을 4개 μ„€μ •ν•˜μ˜€λ‹€. remain이 κ³„μ†ν•΄μ„œ λ°”λ€ŒλŠ” 것을 ν™•μΈν•˜κ³ μž ν•œλ‹€.

 

 

 

디버깅을 λ°”λ‘œ μ‹œμž‘ν•˜λ©΄ 맨 첫번째 쀑단점에 λ©ˆμΆ˜λ‹€.

 

λ³€μˆ˜μ˜ 값도 λ°”λ‘œ 확인할 수 μžˆλ‹€.

 

 

 

κ·Έ ν›„ F8을 ν΄λ¦­ν•˜λ©΄ λ‹€μŒμ€„μ„ κ±΄λ„ˆλ›°κ³  λ‹€μŒ μ€‘λ‹¨μ μ—μ„œ λ©ˆμΆ˜λ‹€.

 

λ™μ‹œμ— λ³€μˆ˜λ„ λ³€ν•œλ‹€.

 

 

 

λ™μΌν•˜κ²Œ F8을 ν΄λ¦­ν•˜λ©΄ λ‹€μŒ μ€‘λ‹¨μ μ—μ„œ λ©ˆμΆ”κ³ ,

 

μ°¨λ‘€λ‘œ λ³€μˆ˜μ˜ 값도 λ³€ν•œλ‹€.

 

 

 

λ§ˆμ§€λ§‰ 쀑단점에 였게되면

 

10μ›μ§œλ¦¬ λ³€μˆ˜μ˜ 값도 λ³€ν•œλ‹€.

 

 

 

 

λ˜ν•œ Debug.Printλ₯Ό 톡해 VBAμ°½μ—μ„œλ„ κ²°κ³Όλ₯Ό λ°”λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

 

 

 

 

λ§Žμ€ λ„μ›€λ˜μ…¨λ‹€λ©΄β€μ™€ κ΅¬λ… λΆ€νƒλ“œλ¦΄κ²Œμš”!

:)

λ°˜μ‘ν˜•