본문 바로가기

엑셀/VBA

엑셀 VBA 텍스트 상자(TextBox) 컨트롤 사용하기

반응형

이전 글에서 UserForm에 대해 알아보았습니다. 이번에는 UserForm을 구성할 때 사용할 수 있는 텍스트 상자(TextBox) 컨트롤에 대해 알아보겠습니다.

 

엑셀 VBA UserForm 만들기 및 화면에 출력하기

 

엑셀 VBA UserForm 만들기 및 화면에 출력하기

이전 글에서 UserForm을 디자인하는 방법과 ActiveX 컨트롤에 대해 알아보았습니다. UseForm에 대해 좀 더 자세히 알아보려고 합니다. VBA 사용자 정의 폼과 컨트롤 도구로 엑셀 시트에 데이터 입력하기

mr-johndoe.tistory.com

 

1. 텍스트 상자(TextBox) 컨트롤

  텍스트 상자는 도구 상자에 있는 컨트롤 중 하나이며, 데이터를 입력받을 때나 데이터를 표시할 때 등 사용 빈도가 많은 컨트롤입니다. 

텍스트 상자를 이용하여 데이터를 입력받아 엑셀 시트에 저장하는 예를 이전 글에서 설명하였습니다. 이전 글에서 텍스트 상자 사용에 대해 확인해 보시기 바랍니다.

 

VBA 사용자 정의 폼과 컨트롤 도구로 엑셀 시트에 데이터 입력하기

 

VBA 사용자 정의 폼과 컨트롤 도구로 엑셀 시트에 데이터 입력하기

지금까지 VBA 작성을 위한 ActiveX 컨트롤을 사용하는 방법에 대해 알아보았습니다. 이번에는 직접 디자인한 창을 띄우고 데이터를 입력하면 엑셀 시트에 정리되어 입력되게 하는 방법에 대해 알

mr-johndoe.tistory.com

 

 

 

 

 

 

2. 텍스트 상자(TextBox)에 숫자만 입력하도록 설정

  텍스트 상자로 입력된 데이터는 기본적으로 텍스트 형식으로 인식합니다. 그러므로, 텍스트 상자로 입력된 숫자는 텍스트로 인식되므로 형 변환을 하여야 숫자로 사용 가능합니다. 또한, 아스키코드(ASCII)를 이용하여 텍스트 상자에 입력되는 값이 숫자인지 확인 가능합니다. 이를 이용하여 입력되는 값을 숫자로만 제한할 수 있습니다.

 

아스키코드를 확인하는 함수는 ASC 함수이며 다음과 같이 사용합니다.

 

   ASC(값)

 

입력한 에 해당하는 아스키코드를 반환합니다.

 

3. 텍스트 상자에 암호 입력 하기

  보통 로그인을 할 경우 암호를 입력하면 '*'로 표시되도록 하는 경우가 많습니다. 이와 같이 VBA 텍스트 상자를 통해 암호를 입력할 때도 입력되는 값이 표시되지 않고 '*'가 표시되도록 할 수 있습니다.

 

텍스트 상자의 속성 창을 보시면 [그림 1]에서 빨간색 사각형으로 표시한 'PasswordChar' 항목을 보실 수 있습니다.

 

TextBox-속성창
[그림 1] 텍스트 상자-속성창

 

'PasswordChar' 항목에 데이터 입력시 표시하고자 하는 값을 입력하면 됩니다. 일반적으로 암호를 입력할 때 표시하는 '*'를 입력하시면 해당 텍스트 상자에 데이터를 입력할 때 화면에는 *로 표시됩니다.

 

 

 

 

4. 예제로 확인

엑셀을 여시고 VBE 창을 열고 사용자 정의 폼을 생성합니다.

[그림 2]와 같이 삭성합니다.

 

로그인-창
[그림 2] 로그인 창

[그림 2]를 보시면 '아이디 :'와 '비밀번호 :'는 도구 상자에서 레이블을 생성하여 Caption에 각각 입력하였습니다. 그리고, 텍스트 상자와 명령 단추를 각 2개씩 생성하고 버튼 하나의 Caption에는 '로그인', 나머지 하나는 '취소'를 입력하였습니다. 그리고, 사용자 정의 폼의 이름을 '로그인'으로 설정하였습니다.

 

비밀번호를 입력할 텍스트 상자를 클릭하시고 속성 창에서 'PasswordChar' 항목에 '*'를 입력합니다.

 

원래 비밀번호는 문자 및 특수문자를 포함하여 생성할 수 있지만 여기서는 숫자로만 입력되도록 설정해 보겠습니다. 그리고, 비밀번호를 입력할 텍스트 상자를 더블클릭하여 코드 창을 엽니다.

 

TextBox-입력키-확인
[그림 3] 텍스트 상자 - 입력키 아스키 코드 확인

그리고, [그림 3]에서 빨간색 사각형으로 표시된 부분을 keypress로 변경합니다. 

아래와 같이 코드를 작성합니다.

 

   Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

      If KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then MsgBox ("숫자를 입력해 주세요")

   End Sub

 

If KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then MsgBox ("숫자를 입력해 주세요")

: 입력된 키의 아스키코드가 0보다 작거나 9보다 큰 경우 에시지 창을 출력하도록 하였습니다.

 

로그인 버튼을 더블클릭하고 다음 코드를 입력합니다.

 

   Private Sub CommandButton1_Click()

      If TextBox1.Value = "abcd" And TextBox2.Value = "12345" Then

         MsgBox ("로그인 성공")

      Else

         MsgBox ("로그인 실패")

      End If

   End Sub

 

 If 문을 이용하여 텍스트 상자에 입력된 값이 지정된 값과 일치하는지 확인합니다.

 

취소 버튼을 더블클릭하고 다음과 같이 코드를 작성합니다.

 

   Private Sub CommandButton2_Click()

      Unload Win_로그인

   End Sub

 

취소 버튼을 클릭하면 로그인 창을 숨기라는 코드입니다.

 

이제 엑셀 시트에 ActiveX 버튼 하나를 생성합니다. Caption에 '입력'이라고 설정하고 버튼을 더블클릭하여 코드 창을 열고 아래와 같이 코드를 입력합니다.

 

   Private Sub CommandButton1_Click()

      Win_로그인.Show

   End Sub

 

엑셀 시트에서 로그인 버튼을 클릭하면 로그인 창이 열리고 입력한 아이디와 비밀번호와 동일하게 텍스트 상자에 입력한 후 로그인 버튼을 클릭하시면 로그인 성공 메시지 창이 뜨는 것을 확인하실 수 있습니다. 또한, 암호 입력 시 *표로 표시되고 문자를 입력할 때는 숫자를 입력하라는 메시지 창이 뜹니다.

 

반응형