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

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

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

VBA 조회 수 2855 추천 수 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 45080
222 엑셀수식 countif 함수 질문 file [2] [레벨:5]눈물바다 2014-10-05 2915
221 엑셀수식 연도명으로 만들어지는 시트에서 올해것만 자동참조하기 file [2] [레벨:4]성투은자 2013-06-13 2915
220 엑셀일반 질문하나 더 드립니다! [1] [레벨:4]나카타 2011-12-09 2912
219 VBA 데이터가 있을 경우 수식 넣기?? [4] [레벨:1]아우릭 2012-03-20 2907
218 엑셀수식 MATCH함수 수식 내에 참조수식을 넣으려면? file [5] [레벨:1]아아압액셀 2012-06-06 2904
217 아별툴관련질문 아별툴을 설치 하고 나서 crtl+f 의 기능 중에.. [4] [레벨:2]큰아빠에요 2012-01-16 2902
216 다량데이터 일부분씩 저장하기 [1] [레벨:1]해적 2010-12-06 2897
215 엑셀일반 셀 병합 [4] [레벨:5]눈물바다 2012-06-18 2894
214 엑셀수식 셀에 입력된 값을 이름범위로 수식내에 삽입하기? file [2] [레벨:4]성투은자 2013-04-09 2889
213 자동 필터의 기능을 사용하여 제작한 메크로를 대체 가능한가요? file [2] [레벨:1]이엑셀 2010-11-12 2878
212 VLookup 두개이상의 범위조건을 만족하는 값을 구하려면..? file [3] [레벨:2]파란달 2013-05-02 2875
211 피벗테이블 Vlookup 에서 혼동이 와 문의드려요~ file [11] [레벨:1]예진 2012-11-11 2874
210 [엑셀초보]질문 올립니다... file [2] [레벨:1]김해영이 2010-10-18 2869
209 엑셀수식 수식좀 만들어주세요 [3] [레벨:4]요셉 2013-03-15 2868
208 VBA Excel에서 DLL Load file [2] [레벨:1]와룡 2012-10-23 2863
207 [문의] 아별설치시 엑셀 충돌현상 imagefile [3] [레벨:2]젤코 2011-02-18 2863
206 피벗테이블 피벗테이블을 이용해서 할 수 있는 방법이 있나요???? file [3] [레벨:5]정화 2011-11-12 2857
205 VLookup 어떻게 수식을 만들어야할지 모르겟어요ㅜㅜ file [3] [레벨:1]영우세령아빠 2013-04-12 2856
» VBA 하나씩 검색하는 질문입니다. file [3] [레벨:4]신강현 2013-02-20 2855
203 2007사용자 메뉴 imagefile [1] [레벨:1]털복숭이 2011-04-06 2854