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

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

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

VBA 조회 수 2802 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 42526
73 VBA 선택한 영역 랜덤 색 대해서 질문하겟습니다. file [4] [레벨:4]신강현 2013-03-13 3778
72 VBA vba Activate 오류 질문합니다 file [3] [레벨:4]신강현 2013-03-11 3238
71 VBA 엑셀 vba 함수 질문드릴게요. [4] [레벨:4]신강현 2013-03-04 4813
» VBA 하나씩 검색하는 질문입니다. file [3] [레벨:4]신강현 2013-02-20 2802
69 VBA 사진 매크로 질문입니다 ^^ [5] [레벨:2]광택입니다 2013-02-19 3828
68 VBA vba 등록질문하겟습니다. file [6] [레벨:4]신강현 2013-02-02 3946
67 VBA 진행바 응용(다른 메뉴 실행중) _ 작업 진행바 Progress bar file [3] [레벨:5]맑은이슬 2013-02-02 4270
66 VBA 시트... [2] [레벨:1]마루 2013-02-01 3378
65 VBA 프로그램바 질문 _ 작업 진행바 Progress bar file [2] [레벨:4]신강현 2013-01-30 6097
64 VBA 파일&폴더 자꾸 글올려서 죄송합니다. open문 질문입니다.ㅠㅠ [1] [레벨:4]신강현 2013-01-29 3694
63 VBA textbox 크기 질문 [2] [레벨:4]신강현 2013-01-29 3354
62 VBA 사용자 지정 메뉴 크기조정 imagefile [2] [레벨:5]맑은이슬 2013-01-29 3253
61 VBA 같은데이타 병합 file [2] [레벨:4]고수가되고파 2013-01-21 3859
60 VBA .Find 랜덤 컨틀로바질문입니다.. [3] [레벨:4]신강현 2013-01-21 3883
59 VBA win7 64bit / 64bit 엑셀 / 32bit DLL의 사용법이 궁금합니다. file [레벨:1]컴바치 2013-01-04 5040
58 VBA 데이터 유효성 질문.. 리스트에서 항목 선택하면 기존 항목에 더해져서 표시되게 하기 secretimage [1] [레벨:1]미소가인 2012-12-22 43
57 VBA 엑셀 랜덤돌리기 질문입니다 file [2] [레벨:4]신강현 2012-12-07 5180
56 VBA 파일&폴더 VBA 수정하여 사용하다가 막혀서 문의드립니다. file [2] [레벨:1]예진 2012-11-23 4077
55 VBA 특정폴더 파일 실행 file [4] [레벨:4]고수가되고파 2012-11-22 3925
54 VBA 병합효과 file [3] [레벨:4]고수가되고파 2012-11-22 6013