1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

하나씩 검색하는 질문입니다.

VBA 조회 수 2838 추천 수 0 2013.02.20 15:27:08

회원검색수정 폼이 로드될때

 

기초값은 회원자료에서 회원번호가 1인값이 기초값입니다

 

그리고 처음 버튼을누르면 회원번호 1인 값들이 회원검색수정 폼에 뜹니다

 

그리고 앞으로 버튼을 누르면 회원번호가 그다음 값으로 넘어가는 것입니다 즉 회원번호가 1이엿다면 2로 넘어가는것이죠

 

그리고 뒤로 버튼을 누르면 회원번호가 이전 값으로 이동해야합니다.  즉 회원번호가 5엿다면 4로 이동 되야합니다

 

그리고 마지막 버튼을 누르면 회원자료 시트의 값의 마지막값을 넣어줘야합니다

 

제가 안풀리는 문제는 앞으로 , 뒤로 버튼입니다... 어떻게 손써야할지를 모르겟어서 질문드립니다.


댓글 '3'

profile

[레벨:30]아별

2013.02.20 21:13:15
*.104.126.21

신강현님..

기능경기대회 준비중이신가봐요..

이렇게 하나씩 물어볼게 아니라 기능대회준비하는 사람들이 모인 카페에 가보는 것은 어떨까요?

 

제가 가보니 기출문제 풀이도 있고, 정보도 공유하는 것 같드라구요..

 

아래 네이버 카페가 기능경기대회(지방/전국) 문제 풀이와 관련된 카페입니다.

저기에 가입하셔서 찬찬히 살펴보시면 도움이 될 것 같네요..

가급적 기능경기대회 문제에 대한 질문은 아래 카페에 직접 하시는게 좋을 것 같습니다.

기능경기대회 문제에 대한 부분은 제 홈페이지보다 오히려 전문적인 것 같네요.. 기능대회에 포커스를 맞춘 카페니까요.. ㅎㅎ

http://cafe.naver.com/ieapower

 

 

일단 답변드립니다.

기능대회 문제는 아래와 같은 방식으로 풀어가면 됩니다.

패턴이 거의 일정하기 때문합니다. 유저폼에 시트의 내용을 부어넣고 검색하고 머 그런거죠..

 

Find와 Offset을 잘 활용하면 대부분 해결이 됩니다.

아래 코드를 100% 이해할 수 있을때까지 새로운 질문은 금지입니다.

이 코드를 전부 이해할 수 있다면 대부분의 다른 문제는 응용해서 풀 수 있습니다.

주소록 검색이나 피자 주문이나 학생 기록부 문제도 다 비슷한 방식입니다.

Find와 Offset으로 대부분 해결 가능합니다. Find와 Offset을 완벽히 익히시기 바랍니다.

 

 

원리는 아래와 같습니다.

1. 고객번호 텍스트 박스가 Update되면 모든 필드에 고객번호 해당하는 값을

    집어넣는 프로시저를 하나 만듭니다. Sub searchByNumber()

2. 유저폼이 시작되면 고객번호 텍스트 박스에 1을 집어넣습니다.

    그러면 자연스럽게 Update 이벤트가 발생하는데.. 그 이벤트에 1번에서 만든 프로시저를 호출하게 합니다.

     Private Sub txt고객번호_AfterUpdate()
           Call searchByNumber
     End Sub

3. 앞으로 가기 뒤로 가기는 현재 고객번호에 더하기 빼기 1을 해서 변경해주고..

     1번에 만든 프로시저를 다시 호출해줍니다.

4. 그런식입니다.

 

파일 다운받기 : abyul.com_20130220_FindOnUserform.xlsm

 

 

[ 코드 미리보기 ]

Dim rng As Range

Private Sub UserForm_Initialize()
    Set rng = Sheets("회원자료").Range("A2")
    Me.txt고객번호.Text = 1
End Sub

Private Sub txt고객번호_AfterUpdate()
    Call searchByNumber
End Sub

Sub searchByNumber()
    Dim rFind As Range
    Set rFind = Range(rng, rng.End(xlDown)).Find(Val(Me.txt고객번호.Text), , , xlWhole)
    If rFind Is Nothing Then
        MsgBox "해당하는 고객번호가 없습니다."
        Set rFind = rng.End(xlDown).Offset(1)
    End If
    Me.txt고객번호 = rFind.Offset(0, 0) ' .Cells(i, 1)
    Me.고객번호 = rFind.Offset(0, 0)
    Me.이름 = rFind.Offset(0, 1)
    Me.주민번호 = rFind.Offset(0, 2)
    If Mid(Me.주민번호, 8, 1) = 1 Then Me.opt남성.Value = True Else Me.opt여성.Value = True
    Me.cbo고객분류 = rFind.Offset(0, 4)
    Me.cbo여행지역 = rFind.Offset(0, 5)
    Me.cbo여행구분 = rFind.Offset(0, 6)
    Me.여행일 = rFind.Offset(0, 7)
    Me.cbo지불방법 = rFind.Offset(0, 8)
    Me.가입비 = rFind.Offset(0, 9) & "만원"
    Me.특의사항 = rFind.Offset(0, 10)
    Me.여행일수 = rFind.Offset(0, 11)
    Select Case Me.특의사항
        Case "1인실": Me.opt호텔인실.Value = True
        Case "유류할증": Me.opt유류할종료.Value = True
        Case "선택관광": Me.opt선택관광.Value = True
        Case "특별식": Me.opt특별식.Value = True
    End Select
    Select Case Me.여행일수
        Case "1~5일": Me.opt15일.Value = True
        Case "1~5회": Me.opt15일.Value = True
        Case "6~10일": Me.opt610일.Value = True
        Case "10회 이상": Me.opt11일.Value = True
    End Select
End Sub


Private Sub CommandButton1_Click() '# 처음
    Me.txt고객번호.Text = rng.Offset(1)
    Call searchByNumber
End Sub

Private Sub CommandButton2_Click() '# 앞으로
    Me.txt고객번호.Text = Val(Me.txt고객번호.Text) - 1
    Call searchByNumber
End Sub

Private Sub CommandButton3_Click() '# 뒤로
    Me.txt고객번호.Text = Val(Me.txt고객번호.Text) + 1
    Call searchByNumber
End Sub

Private Sub CommandButton4_Click() '# 마지막
    Me.txt고객번호.Text = rng.End(xlDown)
    Call searchByNumber
End Sub

첨부

[레벨:4]신강현

2013.02.21 15:13:00
*.218.33.33

네 감사합니다 코드 이해하도록 노력해보겟습니다.. 그리고 까페 가입 하엿습니다 .ㅎㅎ 소개해주셔서 감사합니다

profile

[레벨:30]아별

2013.02.21 16:22:16
*.104.126.21

신강현님..

이 코드에 대해 이해가 안되는 부분은 적극적으로 물어보세요..

이것을 이해하고 나면.. 레벨업하시는 겁니다.

그리고 대부분의 문제를 응용해서 풀 수 있습니다. 화이팅!

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 44409
73 VBA 파일&폴더 VBA 수정하여 사용하다가 막혀서 문의드립니다. file [2] [레벨:1]예진 2012-11-23 4145
72 VBA 필터된 데이터 가져오기 시 문제점 [5] [레벨:3]엑셀대단해 2012-07-23 4121
71 VBA vba 방향키 질문입니다 [4] [레벨:4]기능인 2013-07-11 4087
70 VBA 아별님 안녕하세요 file [레벨:2]북곰 2014-07-09 3986
69 VBA vba 등록질문하겟습니다. file [6] [레벨:4]신강현 2013-02-02 3974
68 VBA 특정폴더 파일 실행 file [4] [레벨:4]고수가되고파 2012-11-22 3958
67 VBA .Find 랜덤 컨틀로바질문입니다.. [3] [레벨:4]신강현 2013-01-21 3932
66 VBA 같은데이타 병합 file [2] [레벨:4]고수가되고파 2013-01-21 3918
65 VBA 오늘도 질문!^^있습니다. [레벨:2]정용규 2015-01-19 3899
64 VBA 사진 매크로 질문입니다 ^^ [5] [레벨:2]광택입니다 2013-02-19 3862
63 VBA 엑셀 다른파일 비교하기 2 [2] [레벨:6]파이스 2012-08-23 3850
62 VBA 선택한 영역 랜덤 색 대해서 질문하겟습니다. file [4] [레벨:4]신강현 2013-03-13 3839
61 VBA .Find find 문을 공부하던도중 문제하가잇어서 질문올립니다. file [2] [레벨:4]신강현 2013-03-22 3816
60 VBA 파일&폴더 자꾸 글올려서 죄송합니다. open문 질문입니다.ㅠㅠ [1] [레벨:4]신강현 2013-01-29 3731
59 VBA 엑셀 질문드립니다. file [2] [레벨:1]박상민 2014-02-14 3696
58 VBA 몇가지 질문들 [8] [레벨:2]정용규 2015-01-13 3664
57 VBA 아별님 안녕하세요? 파이스입니다. _ 엑셀창과 VBE창 창전환 쉽게 하는 방법 [3] [레벨:6]파이스 2011-11-23 3576
56 VBA 파일&폴더 리본메뉴 폴더 열기 [3] [레벨:5]맑은이슬 2013-04-13 3520
55 VBA 혹시 어떤 문서에서 특정 단어를 추출하는 것이 가능할까요? [2] [레벨:1]하얀모래 2014-02-25 3518
54 VBA REPORT 형식을 변형하고 싶은데 한번 봐주세요 file [7] [레벨:1]예진 2013-04-09 3515