이전에 매입처 관리를 시트로 만들었었는데, 이번에 DB 변경하면서 유저폼으로 새로 만들기로 했습니다.
일단 유저폼 양식은 아래와 같습니다.
텍스트 박스 5개 (검색, 매입처명, 구분, 발주구분)
매입처명 위의 텍스트 박스는 일련번호용 입니다. 나중에 숨김처리할 예정입니다.
버튼 5개 (등록, 수정, 삭제, 초기화, 닫기) 로 구성했습니다.
여담이지만 사실 등록, 수정 부분을 팝업으로 유저폼을 하나 더 만들까를 많이 고민했는데, 일단 구성 요소가 3개밖에 안되서 그냥 유저폼 하나에서 처리하는 방향으로 잡았습니다.
매출처 관리쪽은 팝업 형식으로 만들 예정입니다.
데이터를 표시하는 부분은 ListView를 사용했습니다.
도구>추가 컨트롤에서 Microsoft ListView Control, version 6.0을 선택해 주셔야 사용할수 있습니다.
Listview는 속성에서 반드시 View 부분을 3-lvwReport로 선택해 주시거나 코드에서 설정해 주셔야 제대로 리스트를 표시할수 있습니다.
버튼 부분은 버튼이 아니라 라벨을 사용했습니다.
이전 로그인 폼에서는 이미지 박스를 사용했는데 이게 예쁘긴 한데 이미지를 일일히 다 만들어줘야하는 귀찮음이 있어서 라벨을 사용해서 마우스 오버시 백그라운드가 변하는 방식으로 변경했습니다.
백그라운드 변경 코드는 오빠두엑셀님의 소스 코드에서 따왔습니다.
소스 코드는 아래와 같습니다.
더보기
Option Explicit
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnRegister_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnRegister
End Sub
Private Sub btnRegister_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnRegister
End Sub
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnEdit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnEdit
End Sub
Private Sub btnEdit_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnEdit
End Sub
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnDelete_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnDelete
End Sub
Private Sub btnDelete_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnDelete
End Sub
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnReset_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnReset
End Sub
Private Sub btnReset_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnReset
End Sub
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnClose_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnClose
End Sub
Private Sub btnClose_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnClose
End Sub
'아래 코드를 유저폼에 추가한 뒤, "btnXXX, btnYYY"를 버튼이름을 쉼표로 구분한 값으로 변경합니다.
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim ctl As Control
Dim btnList As String: btnList = "btnReset, btnDelete, btnEdit, btnClose, btnRegister" ' 버튼 이름을 쉼표로 구분하여 입력하세요.
Dim vLists As Variant: Dim vList As Variant
If InStr(1, btnList, ",") > 0 Then vLists = Split(btnList, ",") Else vLists = Array(btnList)
For Each ctl In Me.Controls
For Each vList In vLists
If InStr(1, ctl.Name, Trim(vList)) > 0 Then OutHover_Css ctl
Next
Next
End Sub
'커서 이동시 버튼 색깔을 변경하는 보조명령문을 유저폼에 추가합니다.
Private Sub OnHover_Css(lbl As Control): With lbl: .BackColor = RGB(211, 240, 224): .BorderColor = RGB(134, 191, 160): End With: End Sub
Private Sub OutHover_Css(lbl As Control): With lbl: .BackColor = &H8000000E: .BorderColor = -2147483638: End With: End Sub
아직 완성은 아니지만 여기까지 만든 유저폼 파일을 첨부해 두겠습니다.
'엑셀 vba > 발주관리' 카테고리의 다른 글
매입처 관리폼 #3 Listview 데이터 채우기 (0) | 2021.02.09 |
---|---|
매입처 관리폼 #2 테이블 생성 (0) | 2021.02.09 |
유저폼 만들기 #3 테이블 생성 (0) | 2021.02.04 |
로그인 만들기 #2 유저폼 코드 (0) | 2021.02.01 |
로그인 만들기 #1 로그인 유저폼 만들기 (0) | 2021.01.31 |