컴퓨터활용(컴활) 공부

[스프레드시트] 컴활 실기 1급 풀기 (매크로 작성, 폼)

미스털이 사용자 2023. 12. 2. 15:11
반응형

아래 문제는 아래 URL에서 갖고온 문제입니다.

(출처 : https://klesa108.tistory.com/88 )

실기문제를 계속 풀어보자.

 

 

===

핵심을 찾아보자.

1) <참가신청> 폼 띄우는 것

2) <참가신청> 폼이 초기화할 때, opt회원 선택되게 하고, cmb대상에 영역 설정하는 것

[개발도구]->[컨트롤 그룹]->[디자인 모드] 선택해서 활성화 시키고

참가신청 버튼을 더블클릭하면 VBA 창이 띄워질 텐데

 

아래와 같이 <참가신청>폼이 나타나게끔 show메소드 호출

Public Sub cmd신청_Click()
   
   참가신청.Show
   
End Sub
 

 

참가신청 폼의 코드를 보기 위해서 다음과 같이 실행해주면

 

코드 창이 나타나는데

어떤 이벤트를 구현해야할지 설정해야

초기화될 때에 나타날 것들을 설정하려면

UserForm (폼 창)이

Initialize (초기화)되는 이벤트 여야 한다.

위의 이벤트를 선택해주면

이벤트에 해당하는 Sub프로시저가 생성되는데

대표사진 삭제

사진 설명을 입력하세요.

 

다음과 같이 RowSource메소드를 사용해서 cmb대상의 목록 범위지정을 해주고

opt회원 체크박스가 선택되어지게끔 True로 설정

Private Sub UserForm_Initialize()

    cmb대상.RowSource = "G4:G8"
    
    opt회원.Value = True
    
End Sub
 

 

===

폼의 데이터가 표에 등록되어야 한다.

체크박스가 어떻게 선택됐는지 따라 처리를 달리해야 한다.

 

우선 cmb등록이 클릭 해야 구현되는 거니까

cmb등록의 click이벤트 를 선택하고 생성되는 거 확인

 

먼저 CurrentRegion.Rows.Count를 이용해서 입력할 행 계산해야한다.

i = [테이블 최 좌측상단 셀].CurrentRegion.Rows.Count + 공백

i = [A3].CurrentRegion.Rows.Count + 2

 

그리고 체크박스를 IF문을 써서 나타내면 다음과 같이 코드를 작성할 수 있다.

Private Sub cmd등록_Click()
    '입력할 행이 몇번째인지 계산
    i = [A3].CurrentRegion.Rows.Count + 2
    
    '첫번째 행
    Cells(i, 1) = txt신청자.Value
    
    '두번째 행
    If opt회원.Value = True Then
        Cells(i, 2) = "회원"
    ElseIf opt비회원.Value = True Then
        Cells(i, 2) = "비회원"
    End If
    
    '세번째 행
    Cells(i, 3) = cmb대상.Value
    
    '네번째 행
    Cells(i, 4) = txt이벤트날짜.Value
    
    '다섯번째 행
    Cells(i, 5) = txt신청인원.Value
    
End Sub
 

 

===

cmd종료 눌렀을(클릭)때

1) 메시지 박스 띄우기 (타이틀 : 종료, 내용 : 오늘 날짜)

2) 폼 창 종료 (없애기)

 

우선 해당 이벤트를 만들기 위해

cmd종료, Click을 선택하고 생성확인

 

메시지 창을 띄우는 명령어는 MsgBox인데

총 5개의 인자가 있다.

여기서 우리가 입력할 인자는 2개(내용=1번째 인자 Prompt, 타이틀= 3번째 인자 title)이다.

위 1, 3번째 인자에 들어갈 내용을 넣고

해당 창을 종료하는 스크립트를 만들면 다음과 같다.

Private Sub cmd종료_Click()
    
    MsgBox Date, , "종료"        
    Unload Me    

End Sub
 
 

 

 

<결과 화면+테스트해보자>

 

반응형