VBA¿¡¼ ƯÁ¤ TextBox¿¡ Æ÷Ä¿½º°¡ µé¾î°¬À» ¶§ Num Lock Å°¸¦ ÀÚµ¿ ¼³Á¤Çϱâ À§Çؼ´Â Windows API¸¦ÇØ¾ß ÇÕ´Ï´Ù. ¾Æ·¡´Â À¯ÀúÆû¿¡ ÀÖ´Â TextBox Áß 20°³°¡ ¼ýÀÚ ÀÔ·ÂÀ» À§ÇÑ TextBox¶ó°í °¡Á¤ÇÏ°í, ÀÌ·¯ÇÑ TextBox¿¡ Æ÷Ä¿½º°¡ °¥ ¶§ Num LockÀ» ¼³Á¤ÇÏ´Â °£´ÜÇÑ ÄÚµåÀÔ´Ï´Ù.
¸ÕÀú, À¯ÀúÆûÀÇ ÄÚµå â¿¡ ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡Çϼ¼¿ä.
Option Explicit
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const VK_NUMLOCK As Long = &H90
Const KEYEVENTF_KEYUP As Long = &H2
Private Sub TextBox1_GotFocus()
SetNumLock
End Sub
Private Sub TextBox2_GotFocus()
SetNumLock
End Sub
' ... (Áß°£ »ý·«: ³ª¸ÓÁö TextBoxµé¿¡ ´ëÇؼµµ °°Àº Äڵ带 ¹Ýº¹)
Private Sub TextBox20_GotFocus()
SetNumLock
End Sub
Private Sub SetNumLock()
If GetKeyState(VK_NUMLOCK) = Then
keybd_event VK_NUMLOCK, , , ' NumLock Äѱâ
keybd_event VK_NUMLOCK, , KEYEVENTF_KEYUP, ' NumLock Å° ¶À
End If
End Sub
À§ Äڵ忡¼ TextBox1_GotFocus
, TextBox2_GotFocus
µîÀÇ À̺¥Æ®´Â ¼ýÀÚ ÀÔ·ÂÀ» ¹Þ´Â °¢°¢ÀÇ TextBox¿¡ ´ëÇØ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù. À§ ÄÚµå´Â Num LockÀÌ ²¨Á® ÀÖ´Â »óÅ¿¡¼ Æ÷Ä¿½º°¡ µé¾î¿Ã °æ¿ì Num LockÀ» ÄÑ°Ô µË´Ï´Ù.
°¢ TextBox¸¶´Ù GotFocus À̺¥Æ®¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ ¹ø°Å·Ó´Ù¸é, ÅؽºÆ®¹Ú½ºµéÀ» ¹Ýº¹¹®À» ÅëÇØ Ã³¸®ÇÏ´Â ¹æ¹ýÀ» °í·ÁÇØ¾ß ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, À¯ÀúÆûÀÇ Initialize À̺¥Æ®¿¡¼ ¸ðµç °ü·Ã TextBox¿¡ GotFocus À̺¥Æ®¸¦ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù.