¿¹Á¦ ÆÄÀÏ ³»·Á¹Þ±â
'¹ö±×'¶õ 'Äڵ尡 ÇÁ·Î±×·¡¸ÓÀÇ Àǵµ´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â °æ¿ì'¸¦
¸»Çϸç, ¿©±â¿¡´Â ³í¸®Àû ¿À·ù(Logical errors)±îÁö Æ÷ÇԵȴٰí Áö³
½Ã°£¿¡ ¼³¸íµå·È½À´Ï´Ù. ¹ö±×¸¦ ÁÙÀÏ ¼ö ÀÖ´Â Exceller¸¸ÀÇ ³ëÇϿ츦 Àü°Ý(!)
°ø°³ÇÕ´Ï´Ù.
|
¹ö±×¸¦ ¾ø¾Ö´Â(ȤÀº ÁÙÀÌ´Â) ´Ù¼¸ °¡Áö ¹æ¹ý
1. 'Option Explicit'¹®À» »ç¿ëÇÕ´Ï´Ù.
VB EditorÀÇ 'µµ±¸-¿É¼Ç' ¸Þ´º¸¦ ¼±ÅÃÇÕ´Ï´Ù. 'ÆíÁý±â' ÅÇ¿¡¼ 'ÀÚµ¿ º¯¼ö ¼±¾ð' Ç׸ñ¿¡ üũ Ç¥½Ã¸¦ ÇØ µÎ¸é
¸ðµâ ½ÃÆ®¸¦ »ðÀÔÇÒ ¶§¸¶´Ù ¸Ç À§¿¡ 'Option Explicit'À̶ó´Â ¹®ÀåÀÌ ÀÚµ¿ »ðÀԵ˴ϴÙ. ÀÌÁ¦ºÎÅÍ´Â ¸ðµç º¯¼ö¸¦
»ç¿ëÇÒ ¶§ ¹Ì¸® ¼±¾ð(Dim)À» ÇÏ°í »ç¿ëÇØ¾ß ÇϹǷΠºÒÆíÇÏ´Ù°í »ý°¢ÇÒ ¼ö ÀÖÁö¸¸ º¯¼ö À̸§°ú °ü·ÃµÈ ÀÔ·Â ¿À·ù¸¦ »ó´çºÎºÐ
ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. 2.
ÁÖ¼®(Comments)À» °¡±ÞÀû ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù.
ÇÁ·Î±×·¡¹Ö ¼¼°è¿¡¼´Â '6°³¿ù¸¸ Áö³ª¸é ÀÚ±â Àڽŵµ ³²'À̶ó´Â ¸»ÀÌ ÀÖ½À´Ï´Ù. ÄÚµù ½Ã¿¡´Â Á¶±Ý ±ÍÂúÀ» ¼ö ÀÖÁö¸¸ ÁÖ¼®À»
Ãæ½ÇÈ÷ ´Þ¾Æ ³õÀ¸¸é ³ªÁß¿¡ ´Ù½Ã »ìÆìº¼ ÀÏÀÌ ÀÖÀ» ¶§ Å« µµ¿òÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.
3. µµ¿ò¸»°ú ¸ÅÅ©·Î ±â·Ï±â¸¦ Ç×»ó Ȱ¿ëÇÕ´Ï´Ù.
¿¢¼¿ÀÇ µµ¿ò¸»Àº ¹®Á¦°¡ ¹ß»ýÇÏ¿´À» ¶§ °¡Àå ¹ÏÀ»¸¸ÇÑ Áö¿ø±º Áß ÇϳªÀÔ´Ï´Ù. ¹º°¡¸¦ Çϱä ÇØ¾ß°Ú´Âµ¥ ¾î¶»°Ô ÇØ¾ßÇÒ Áö
»ý°¢³ªÁö ¾Ê´Â °æ¿ì, ¸ÅÅ©·Î ±â·Ï±â¸¦ ÅëÇØ »ý¼ºµÈ Äڵ带 »ìÆìº¸°í ÇÁ·ÎÆÛƼ, ¸Þ¼µå¸¦ µµ¿ò¸»¿¡¼ ã¾Æº¸´Â ½À°üÀ» µéÀ̼¼¿ä.
4. µé¿©¾²±â(Indentation) ±ÔÄ¢À» Àû¿ëÇÕ´Ï´Ù.
ÄÚµù ½Ã µé¿©¾²±â ±ÔÄ¢À» »ç¿ëÇÏ¸é °¡µ¶¼ºÀÌ ³ô¾ÆÁ®¼ ÀüüÀûÀÎ ±¸Á¶¸¦ ÆÄ¾ÇÇϱ⠽¬¿öÁý´Ï´Ù.
5. ¿¢¼¿ÀÇ µð¹ö±ë ÅøÀ» Àû±Ø »ç¿ëÇÕ´Ï´Ù.
¿¢¼¿¿¡´Â ¿©·¯ °¡Áö Á¾·ùÀÇ µð¹ö±ë ÅøÀÌ ÀÖ½À´Ï´Ù. óÀ½ »ç¿ëÇÒ ¶§¿¡´Â ±ÍÂú°í º¹ÀâÇØ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù¸¸, ´Ù¼ÒÀÇ ½Ã°£À»
ÅõÀÚÇÏ¿© ÀÌµé µµ±¸ÀÇ »ç¿ë¹ýÀ» Àß ÀÍÇô ³õÀ¸¸é ½ÇÀü¿¡¼ ¸¹Àº µµ¿òÀÌ µË´Ï´Ù. |
À̹ø ½Ã°£¿¡´Â ÀÌ Áß¿¡¼ 5¹øÂ° ºÎºÐ¿¡ ´ëÇØ ÁýÁßÀûÀ¸·Î »ìÆìº¸·Á
ÇÕ´Ï´Ù. ¿¢¼¿¿¡´Â ¿©·¯ °¡Áö µð¹ö±ë ÅøÀÌ ÀÖ¾î¼ À̰ÍÀ» À߸¸ Ȱ¿ëÇÏ¸é ¹ö±×¸¦ ¹Ù·ÎÀâ´Âµ¥ ¸¹Àº µµ¿òÀÌ µË´Ï´Ù.
°¡Àå ÈçÇÑ ¿À·ù Áß Çϳª´Â, º¯¼ö¿¡ ÇÁ·Î±×·¡¸Ó°¡ ÀǵµÇÑ °ªÀÌ ÁöÁ¤µÇÁö
¾Ê´Â °ÍÀÔ´Ï´Ù. MsgBox ÇÔ¼ö¸¦ ÄÚµåÀÇ Àû´çÇÑ ºÎºÐ¿¡ »ðÀÔÇÏ¿© º¯¼ö°ªÀ» »ìÆìº¸¸é ÀÌ¿Í °ü·ÃµÈ ¿À·ù¸¦ ¹æÁöÇÒ ¼ö
ÀÖ½À´Ï´Ù.
|
Sub MsgBoxFunction()
Dim intOffset As Integer
......
MsgBox intOffset
......
End Sub |
ÀÌ ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇϸé intOffset º¯¼ö°ªÀÌ MsgBox¿¡
Ç¥½ÃµË´Ï´Ù. ¹°·Ð ¿©±â¼ÀÇ ¸Þ½ÃÁö ¹Ú½º´Â Àӽ÷Π»ðÀÔÇÑ °ÍÀ̹ǷΠµð¹ö±ë ÀÛ¾÷ÀÌ ³¡³ª¸é Á¦°ÅÇØ ÁÖ¾î¾ß°ÚÁÒ.
MsgBox ÇÔ¼ö ´ë½Å Debug.Print ±¸¹®À» ÀÌ¿ëÇÒ ¼öµµ
ÀÖ½À´Ï´Ù. ¾Õ¿¡¼ MsgBox ÇÔ¼ö¸¦ ÀÔ·ÂÇÑ ºÎºÐ¿¡ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇØ º¸¼¼¿ä.
MsgBox ÇÔ¼ö¸¦ »ðÀÔÇÑ °æ¿ì¿¡´Â ÇÁ·Î½ÃÀú°¡ Áß°£¿¡ ÁߴܵǸé¼
»ç¿ëÀÚ°¡ 'È®ÀÎ'À̳ª 'Ãë¼Ò' µîÀÇ ¹öưÀ» ´·¯ÁÖ¾î¾ß ÇÏ´Â ¹Ý¸é, Debug.Print¹®ÀÇ °æ¿ì¿¡´Â Á÷Á¢ ½ÇÇà
â(Immediate window)¿¡ ÁöÁ¤ÇÑ º¯¼ö°ªÀ» Ç¥½ÃÇÏ°í ´ÙÀ½ ¶óÀÎÀ» °è¼Ó ¼öÇàÇÕ´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó 2°³ ÀÌ»óÀÇ
º¯¼ö¸¦ Á÷Á¢ ½ÇÇà â¿¡ ³ªÅ¸³¾ ¼öµµ ÀÖ½À´Ï´Ù.
|
Debug.Print intOffset, intX,
intY |
¸¸¾à 'Á÷Á¢ ½ÇÇà â'ÀÌ º¸ÀÌÁö ¾ÊÀ¸¸é 'º¸±â-Á÷Á¢ ½ÇÇà â' ¸Þ´º¸¦
¼±ÅÃÇϰųª <Ctrl+G> ۸¦ ´·¯º¸¼¼¿ä.

´ÙÀ½ Äڵ带 ½ÇÇàÇϸé ÇöÀç ¿öÅ©ºÏ¿¡ ÀÖ´Â ½ÃÆ®ÀÇ À̸§µéÀÌ 'Á÷Á¢ ½ÇÇà
â'¿¡ Ç¥½ÃµË´Ï´Ù.
|
Sub DebugPrint()
Dim wrkBook As Workbook
Dim shtSheet As Worksheet
Dim i As Integer
Set wrkBook = ActiveWorkbook
For i = 1 To wrkBook.Sheets.Count
Debug.Print Worksheets(i).Name
Next i
End Sub |
¾Õ¿¡¼ ¼³¸íµå¸° MsgBox ÇÔ¼ö³ª Debug.Print¹®Àº µð¹ö±ë
µµ±¸¶ó±âº¸´Ù´Â µð¹ö±ë ÆÁÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. Áö±ÝºÎÅÍ º»°ÝÀûÀ¸·Î ¿¢¼¿ÀÇ µð¹ö±ë Åø¿¡ ´ëÇØ »ìÆìº¸µµ·Ï ÇÏÁÒ.
ÇÑ ´Ü°è¾¿ ÄÚµå ½ÇÇà
½ÇÇàÇϰíÀÚ ÇÏ´Â ÇÁ·Î½ÃÀú ³»ºÎ¿¡ Æ÷ÀÎÅ͸¦ °¡Á®´Ù ³õÀº ´ÙÀ½ <F8>
۸¦ ´·¯ º¸¼¼¿ä. ´©¸¦ ¶§¸¶´Ù ÇÁ·Î½ÃÀú°¡ ÇÑ ÁÙ¾¿ ½ÇÇàµË´Ï´Ù. º¯¼ö°¡ ÀÖ´Â ºÎºÐ¿¡ ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ¿Ã·Á³õÀ¸¸é ±× º¯¼ö¿¡
ÇöÀç ÇÒ´ç(assign)µÇ¾î ÀÖ´Â °ªÀ» ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ¾ÆÁÖ Æí¸®ÇÕ´Ï´Ù.

À§¿Í °°Àº »óŸ¦ 'Áß´Ü ¸ðµå(Break Mode)'¶ó°í ÇÕ´Ï´Ù. ÀÌ
»óŸ¦ ¹þ¾î³ª·Á¸é Ç¥ÁØ µµ±¸ ¸ðÀ½¿¡¼ 'Àç½ÇÇà( )'
¾ÆÀÌÄÜÀ» Ŭ¸¯ÇÏ¸é µË´Ï´Ù(ÀÌ »óŸ¦ '½ÇÇà ¸ðµå(Run Mode)'¶ó°í ºÎ¸¨´Ï´Ù).
Ä¿¼±îÁö ½ÇÇà
¸» ±×´ë·Î... Ä¿¼°¡ ³õ¿©Á® ÀÖ´Â À§Ä¡±îÁö Çѹø¿¡ ½ÇÇàÇÕ´Ï´Ù. Àû´çÇÑ
À§Ä¡¿¡¼ ¸¶¿ì½º¸¦ Ŭ¸¯ÇÏ¿© Ä¿¼¸¦ ¿Å°Ü³õÀº ´ÙÀ½, <Ctrl+F8> ۸¦ ´©¸£°Å³ª 'µð¹ö±×-Ä¿¼±îÁö ½ÇÇà' ¸Þ´º¸¦
¼±ÅÃÇÕ´Ï´Ù.
Áß´ÜÁ¡ ¼³Á¤/ÇØÁ¦
Áß´ÜÁ¡(Break Point)À̶õ ÇÁ·Î½ÃÀú°¡ ½ÇÇàµÇ´Â µµÁß¿¡ ÀÚµ¿À¸·Î
½ÇÇàÀ» ÁßÁöÇϵµ·Ï »ç¿ëÀÚ°¡ ÁöÁ¤ÇØ ³õÀº À§Ä¡¸¦ ¸»ÇÕ´Ï´Ù. °³³äÀûÀ¸·Î´Â Stop ¹®°ú ºñ½ÁÇѵ¥ ¸¶¿ì½º Ŭ¸¯¸¸À¸·Î ¼³Á¤ÇÒ ¼ö
ÀÖ´Ù´Â °Í°ú ¿öÅ©ºÏÀ» ÀúÀåÇÑ ´ÙÀ½ ´Ù½Ã ¿ °æ¿ì, Áß´ÜÁ¡Àº ÀúÀåµÇÁö ¾Ê´Â´Ù´Â Á¡¿¡¼ Â÷À̰¡ ÀÖ½À´Ï´Ù. Áß´ÜÁ¡À» ¼³Á¤ÇÏ´Â
¹æ¹ýÀº ³× °¡Áö Á¤µµ°¡ ÀÖ½À´Ï´Ù. Áß´ÜÁ¡À» ¼³Á¤ÇÏ·Á´Â ÇàÀ» ¼±ÅÃÇÑ ´ÙÀ½,
-
ÄÚµå ¿ÞÂÊ¿¡ ÀÖ´Â ¿©¹é Ç¥½ÃÁÙ(gray margin)À»
Ŭ¸¯ÇÑ´Ù.
-
<F9> ۸¦ ´©¸¥´Ù.
-
'µð¹ö±×-Áß´ÜÁ¡ ¼³Á¤/ÇØÁ¦' ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.
-
¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯Çϰí '¼³Á¤/ÇØÁ¦-Áß´ÜÁ¡' ¸Þ´º¸¦
¼±ÅÃÇÑ´Ù(À̰ÍÀº Åä±Û Ű·Î, Áß´ÜÁ¡ÀÌ ÀÌ¹Ì ¼³Á¤µÇ¾î ÀÖ´Ù¸é ÇØÁ¦ÇÕ´Ï´Ù).

¾î´À ¹æ¹ýÀ̵ç Áß´ÜÁ¡À» ¼³Á¤Çϸé À§ÀÇ ±×¸²°ú °°ÀÌ ¿©¹é Ç¥½ÃÁÙ¿¡ Ä¿´Ù¶õ
µ¿±×¶ó¹Ì°¡ »ý±é´Ï´Ù. Áß´ÜÁ¡Àº ¿©·¯ °÷¿¡ ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç ¼³Á¤À» ÇØÁ¦ÇÏ·Á¸é Áß´ÜÁ¡À» Ŭ¸¯ÇÏ¸é µË´Ï´Ù. ¼³Á¤µÈ Áß´ÜÁ¡µéÀ»
ÇѲ¨¹ø¿¡ ¸ðµÎ Á¦°ÅÇÏ·Á¸é <Ctrl+Shift+F9> ۸¦ »ç¿ëÇÕ´Ï´Ù.
'Áö¿ª' â Ȱ¿ë
¾Õ¿¡¼ 'ÇÑ ´Ü°è¾¿ ÄÚµå ½ÇÇà'ÇÒ ¶§ <F8> ۸¦ »ç¿ëÇÑ´Ù°í
¼³¸íµå·ÈÁö¿ä? 'º¸±â-Áö¿ª â' ¸Þ´º¸¦ ¼±ÅÃÇϸé 'Áö¿ª' âÀÌ Ç¥½ÃµË´Ï´Ù. ÀÌ »óÅ¿¡¼ <F8> ۸¦ °è¼Ó ´·¯º¸¸é °¢
º¯¼ö¿¡ °ªµéÀÌ ¾î¶»°Ô º¯ÇÏ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.

¿¹Àü¿¡ ¼øÈ¯¹®ÀÌ Àß ÀÌÇØµÇÁö ¾ÊÀ¸¸é Á¾À̸¦ ÇÑ Àå ²¨³»³õ°í ¸î ¹ø
·ÎÁ÷À» µ¹·Áº¸¶ó°í Á¶¾ðÇØ µå·È¾úÁö¿ä? 'Áö¿ª' âÀ» »ç¿ëÇϸé ÇÁ·Î½ÃÀú ³»ÀÇ ¸ðµç º¯¼ö°ªÀÌ ÀÚµ¿À¸·Î ³ªÅ¸³ª¹Ç·Î ±×·± °í»ýÀ»
ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.
'Á¶»ç½Ä â' Ȱ¿ë
'Á¶»ç½Ä â(Watch Window)'À» ÀÌ¿ëÇϸé 'Á÷Á¢ ½ÇÇà â'
ȤÀº ´Ù¸¥ ¹æ¹ýÀ» ÅëÇØ º¯¼ö°ªÀ» ÀÏÀÏÀÌ È®ÀÎÇÒ ÇÊ¿ä ¾øÀÌ º¯ÈµÇ´Â ³»¿ëÀ» »ìÆìº¼ ¼ö ÀÖ½À´Ï´Ù.
VB Editor »óÅ¿¡¼ 'µð¹ö±×-Á¶»ç½Ä Ãß°¡' ¸Þ´º¸¦ ¼±ÅÃÇϰí
´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù. º¯¼ö jÀÇ °ªÀÌ 5¸¦ ³Ñ¾î°¡¸é ÇÁ·Î½ÃÀú¸¦ ÀϽÃÀûÀ¸·Î ÁßÁöÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù.

'º¸±â-Á¶»ç½Ä â' ¸Þ´º¸¦ ¼±ÅÃÇÏ¿© 'Á¶»ç½Ä' âÀÌ ³ªÅ¸³ªµµ·Ï ÇÑ ´ÙÀ½
WatchWindow ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÕ´Ï´Ù. º¯¼ö jÀÇ °ªÀÌ 5¸¦ ³Ñ¾î°¡´Â ¼ø°£ ÇÁ·Î½ÃÀú´Â ½ÇÇàÀ» ¸ØÃß°Ô µÇ´Âµ¥, ÀÌ Áß´Ü
¸ðµå¿¡¼ ¸¶¿ì½º Æ÷ÀÎÅ͸¦ º¯¼ö°¡ ÀÖ´Â °÷À¸·Î °¡Á®°¡¸é ±×¶§±îÁö º¯¼öµé¿¡ ÇÒ´çµÈ °ªÀ» º¸¿©ÁÝ´Ï´Ù.

À̹ø °Á´ ½Ç¹«¿Í Á÷Á¢ µµ¿òµÇ´Â ¿¹Á¦°¡ Àû¾î¼ º°·Î µµ¿òÀÌ ¾ÈµÈ´Ù°í »ý°¢ÇÏ´Â ºÐÀÌ °è½ÇÁöµµ ¸ð¸£°Ú½À´Ï´Ù. ¹Ù»Ú´Ù°í ¹«µò ³¯·Î
°è¼Ó ÅéÁúÀ» ÇÏ´Â °Í¸¸Å ¾î¸®¼®Àº ÀÏÀÌ ¶Ç ÀÖÀ»±î¿ä. ´çÀåÀº ½Ã°£ÀÌ Á» °É¸®´õ¶óµµ Àá½Ã °ÉÀ½À» ¸ØÃß°í ³¯À» º¸£´Â ½Ã°£ÀÌ
¹Ýµå½Ã ÇÊ¿äÇÕ´Ï´Ù.
µð¹ö±ë ÅøÀ» ÀÍÈ÷´Âµ¥ ÅõÀÔÇÏ´Â ½Ã°£Àº ¹Ù·Î ¹«µò Ä®³¯À» ³¯Ä«·Ó°Ô Çϱâ À§ÇÑ ½Ã°£À̸ç, ¾ðÁ¨°¡ ¿ ¹è¡¤½º¹« ¹èÀÇ È¿°ú·Î ³ªÅ¸³¯ °ÍÀÓÀ»
¹Ï¾î ÀǽÉÄ¡ ¾Ê½À´Ï´Ù. Trust me~~
|