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

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

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

VBA 조회 수 3052 추천 수 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 58158
582 엑셀일반 특정 조건에 맞는 행(또는 열) 삭제 방법 궁금해요~ [2] [레벨:3]jmsynn 2012-08-07 3281
581 추가기능(AddIns) 사용자지정 메뉴 아이콘 크기 크게 가능 한가요? [4] [레벨:5]맑은이슬 2013-03-15 3290
580 VBA 기존에 설정되어 있는 단축키를 다른 기능으로 대체하는 방법 가르쳐주세요~ [4] [레벨:2]LH 2013-04-15 3295
579 엑셀일반 신입 주제에 질문 먼저라 죄송합니다 ㅠㅠ file [3] [레벨:1]에봉이 2011-12-09 3301
578 피벗 필드 셀서식에 원본데이터 셀서식 적용이 안됩니다. file [1] [레벨:3]블루짱이 2011-03-30 3306
577 엑셀수식 랭킹 구하는 함수 질문 file [레벨:5]눈물바다 2015-01-15 3309
576 엑셀수식 월마다 불규칙한 자재사용량의 월사용량 file [1] [레벨:4]성투은자 2013-02-06 3312
575 매번 귀찮게 해서 죄송합니다..ㅜㅜ [2] [레벨:3]알알 2011-04-29 3314
574 엑셀일반 조건에 따라 데이터를 검색하거나 입력하시오..에 대한 질문드립니다 file [3] [레벨:1]화령월향 2013-02-20 3318
573 VLookup 두개이상의 범위조건을 만족하는 값을 구하려면..? file [3] [레벨:2]파란달 2013-05-02 3320
572 고급필터 판매 자료 정렬 관련 질문드려요 _ 피벗테이블과 고급필터를 이용한 데이터 추출방법 file [4] [레벨:1]captainkidd 2013-11-25 3320
571 엑셀수식 엑셀 작업 중, 질문사항! - 다중 조건의 합계 산출 방법(SUMIFS,SUMPRODUCT) [2] [레벨:4]나카타 2011-12-08 3322
570 엑셀일반 엑셀 관련 질문입니다. imagefile [2] [레벨:1]JYK 2013-11-11 3323
569 재미난 엑셀 기능구연 가능?? [1] [레벨:6]ryanoh 2010-10-25 3328
568 VBA 오늘은 간단한 것 질문할께요 _ VBE 모듈, 유저폼 내보내기(Export) 방법 [4] [레벨:3]엑셀대단해 2012-03-05 3333
567 엑셀수식 분포도 그래프 [1] [레벨:5]눈물바다 2012-09-05 3337
566 VBA ^^ 또다른 질문입니다. _ 한 시트에서 다른 시트로 데이터를 순차적으로 붙여넣기 file [1] [레벨:2]광택입니다 2011-11-15 3338
565 엑셀수식 사용자목록 필요여부 file [2] [레벨:4]성투은자 2013-02-04 3343
564 추가기능(AddIns) 매크로 다른 파일에서 편하게 불러쓰는 법 [2] [레벨:6]파이스 2012-02-15 3346
563 엑셀수식 자동계산 질문입니다._세금계산서 자리수 & 숫자 한글 표시 file [4] [레벨:5]정화 2011-09-14 3347