매출처 관리에서 등록/수정을 눌렀을때 팝업되는 유저폼 입니다.
하나의 유저폼을 사용해서 Caption을 다르게 설정해주고 Caption에 따라 처리를 나눠줬습니다.
유저폼의 레이아웃은 아래와 같습니다.
이해를 돕기 위해 텍스트 박스에는 이름을 써놓았습니다.
등록 버튼은 btnSave, 닫기 버튼은 btnClose로 설정했습니다.
유저폼 이름은 FormEditClient로 설정했습니다.
코드는 아래를 펼쳐서 확인해 주세요.
더보기
Option Explicit
'저장
Private Sub btnSave_Click()
If Me.Caption = "매출처 등록" Then
Call Add_Client
Else
Call Edit_Client
End If
Unload Me
End Sub
'닫기
Private Sub btnClose_Click()
Unload Me
End Sub
'등록
Private Sub Add_Client()
If Me.txtclientName.Value = "" Then
MsgBox "매출처명을 입력해 주세요.", vbCritical, "입력오류"
Exit Sub
End If
Call Connect_DB
'중복 매입처 체크
SQL = "SELECT * FROM client WHERE clientName LIKE '" & Me.txtclientName.Value & "'"
rs.CursorLocation = adUseClient '★★★★★★★★★★★★★★★RecordCount를 뽑아내기위해 반드시 필요함
rs.Open SQL, Cn, adOpenStatic, adLockReadOnly
If rs.RecordCount > 0 Then
MsgBox "이미 등록되어있는 매출처 입니다.", vbCritical, "오류"
rs.Close
Cn.Close
Exit Sub
Else
rs.Close
End If
'매입처 추가 SQL문
SQL = "INSERT INTO client (clientName, licenseNumber, address, businessConditions, businessCategory)"
SQL = SQL + " VALUES ('" & Me.txtclientName.Value & "', '" & Me.txtlicenseNumber.Value & "', '" & Me.txtaddress.Value & "', '" & Me.txtbusinessConditions.Value & "', '" & Me.txtbusinessCategory.Value & "')"
rs.Open SQL, Cn
Cn.Close
End Sub
'수정
Private Sub Edit_Client()
Call Connect_DB
'매입처 수정 SQL문
SQL = "UPDATE client SET clientName = '" & Me.txtclientName.Value & "'"
SQL = SQL + ", licenseNumber = '" & Me.txtlicenseNumber.Value & "'"
SQL = SQL + ", address = '" & Me.txtaddress.Value & "'"
SQL = SQL + ", businessConditions = '" & Me.txtbusinessConditions.Value & "'"
SQL = SQL + ", businessCategory = '" & Me.txtbusinessCategory.Value & "'"
SQL = SQL + " WHERE idx = '" & Me.txtidx.Value & "'"
rs.Open SQL, Cn
Cn.Close
End Sub
'유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnClose 를 버튼 이름으로 변경합니다.
Private Sub btnSave_Exit(ByVal Cancel As MSForms.ReturnBoolean)
OutHover_Css Me.btnSave
End Sub
Private Sub btnSave_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
OnHover_Css Me.btnSave
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 = "btnSave, btnClose" ' 버튼 이름을 쉼표로 구분하여 입력하세요.
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 > 발주관리' 카테고리의 다른 글
상품 관리 #1 테이블 만들기 (0) | 2021.02.25 |
---|---|
매출처 관리 #5 유저폼 전체 코드 & 파일 (0) | 2021.02.20 |
매출처 관리 #3 유저폼 버튼별 코드 (0) | 2021.02.18 |
매출처 관리 #2 매출처 관리 유저폼 만들기 (0) | 2021.02.17 |
매출처 관리 #1 테이블 만들기 (0) | 2021.02.16 |