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

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

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

VBA 조회 수 3188 추천 수 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 65315
662 VLookup 참조범위의 셀에 '~' 글자가 들어가도 조회하는 방법 file [2] [레벨:4]성투은자 2013-12-03 3127
661 피벗테이블 sumproduct 질문 file [1] [레벨:2]광택입니다 2011-11-14 3147
660 아별툴관련질문 sheet 통합하기 file [1] [레벨:2]광택입니다 2011-12-06 3151
659 일별 구매 현황에서 품목별 최근,최고,최저 단가구하기 file [1] [레벨:1]강상준 2010-11-02 3152
658 엑셀수식 셀에 있는 주소에서 국가만 남기고 지우는 방법좀 알려주세요 imagefile [1] [레벨:1]누렁2 2011-08-11 3153
657 엑셀일반 기본 라인 없는 문서 만드는 법 file [2] [레벨:6]파이스 2012-04-12 3156
656 아별툴관련질문 아별 깔고나서 글이 안써져요 [1] [레벨:1]박주연 2012-02-02 3163
655 엑셀수식 다중 조건을 만족하는 값을 입력하고 싶습니다. file [2] [레벨:1]엑셀배우기 + 1 2014-02-10 3166
654 VBA 동적 데이터 교환 질문 [1] [레벨:3]바람 2011-12-27 3170
653 매크로 함수를 VBA로 바꾸면 될까요??? (ExecuteExcel4Macro in UDF) file [2] [레벨:1]테스킨 2011-07-12 3181
652 아별툴관련질문 아별툴 실행 에러 관련 [1] [레벨:3]고독한나그네 2012-02-14 3185
651 액셀요 ..정년일 구하기. [1] [레벨:1]Dookie 2011-03-07 3187
» VBA 하나씩 검색하는 질문입니다. file [3] [레벨:4]신강현 2013-02-20 3188
649 VBA [ XML PARSING ] 오픈 API 관련된 질문입니다. [3] [레벨:2]난호 2012-07-26 3189
648 VBA 데이터가 있을 경우 수식 넣기?? [4] [레벨:1]아우릭 2012-03-20 3193
647 엑셀수식 수식좀 만들어주세요 [3] [레벨:4]요셉 2013-03-15 3198
646 VLookup vlookup 의 true 기능 관련. [5] [레벨:3]rynoel 2012-07-02 3204
645 엑셀일반 win7에서 파일열기시 imagefile [2] [레벨:3]말키리 2013-02-25 3206
644 VBA VBA에러처리2 file [5] [레벨:4]고수가되고파 2012-09-26 3209
643 아별툴관련질문 아별툴을 설치 하고 나서 crtl+f 의 기능 중에.. [4] [레벨:2]큰아빠에요 2012-01-16 3210