나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 참죤날 (goodays)

추천:  2
파일:     목록상자.xlsm (568.9KB) 조회:  3353
제목:   목록상자에 자료 일괄 불러오기
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): 2010

* 아래줄에 질문을 작성하세요 >>

안녕하세요

목록박스를 이용하여 에셀에 등록된 자료를 일괄불러오기를 하려고 합니다

하나의 목록상자는 그룹명을 지정하고
또 하나의 목록상자는 그룹으로 지정한 자료를을 불러오는 곳입니다.

그룹명을 지정하는 첫번째 목록상자에서는 For Next 문을 이용하여 자료들을 일괄 불러오기를 실행하였습니다만

두번째 목록상자에서도 For Next 문을 이용하여 자료들을 일괄 불러오기를 하였으나 오류메시지가 발생했습니다

오류메시지는 다음과 같습니다
"Select Case와 맨 처음 Case 사이의 문들과 레이블이 잘못되었습니다"
 


예문)

    With Me.ListBox2
        .ColumnCount = 5
        .ColumnWidths = "110;200;110;60;70"
        .ColumnHeads = False
        Select Case Me.ListBox1.ListIndex
        
        For i = 0 To 2400 Step 16
            
            Range("A" & i, "F" & i + 17).Select
            If Sheets("품목").Range("A" & i, "F" & i + 17) = "" Then Exit For
            
            Case i
            .RowSource = "품목!B" & i + 3 & ":F" & i + 17
        Next i

        End Select
        
        .ListIndex = 0
        
    End With


 For Next 문에서 에러가 발생하였습니다

목록박스에서 자료를 일괄 불러올 수 있는 또 다른 방법은 무엇이 있는지요?

한수 배우고 싶습니다

수고하십시오
 
[불량 게시물 신고]  
조삿갓For Next 반복문은 프로그램 코드까지 자동으로 만들어주는 그런 기능은 없습니다. 즉, 위와 같이 코딩했다고 해서 case 1, case 2 ... 등의 조건문이 자동으로 코딩되는 것이 아닙니다.

더구나, 설사 그렇다고 해도 지금의 코딩은 수식 계산이 잘못되어 논리오류를 갖고 있네요.

Select case 구문에 반복문(For, Do)이나 조건문(If, Else) 블록이 들어갈 때에는 각각의 단위 case 조건 안에 품겨야 합니다. 즉, 하나의 case 와 바로 다음의 case 사이에서 For/Next, Do/Loop, If/Else/End if 블록이 완성되어야 합니다.
09-13 (23:08)
삭제 ■신고
조삿갓ListBox1에서 그룹 선택을 바꾸면
그에 따라 ListBox2에 해당 그룹의 품목 정보가 리스트되게 하는 것이지요?

일단 이벤트도 Click 보다는 Change 이벤트로 처리하는 것이 더 안전하고요. 다음과 같이 해 보세요.

Private Sub ListBox1_Change()
   Dim group As Integer
   Dim r1 As Integer
   
   Workbooks("목록상자.xlsm").Sheets("품목").Activate
    With Me.ListBox2
        .ColumnCount = 5
        .ColumnWidths = "110;200;110;60;70"
        .ColumnHeads = False
        group = ListBox1.ListIndex
        r1 = group * 16 + 3
        .RowSource = "품목!B" & r1 & ":F" & r1 + 16
    End With
End Sub
09-13 (23:11)
삭제 ■신고
참죤날해결해 주셔서 감사드립니다.
 .RowSource = "품목!B" & r1 & ":F" & r1 + 16 이부분에서 다음그룹 데이타를 물고 올라와서 16을 15로 수정했더니만 완벽하게 해결되었습니다
다시한번 감사드립니다
09-14 (08:28)
삭제 ■신고
조삿갓아~ 참!
그건 그렇네요. ^^
09-14 (09:07)
삭제 ■신고
        
  

작성일 : 2017-09-13(15:35)
최종수정일 : 2017-09-13(15:35)
 


 ◎ 관련글

  제 목   작성자   날짜
목록상자에 자료 일괄 불러오기 참죤날 2017-09-13
[강좌] Select Case 구문과 If Else 구문의 장단점 비교 조삿갓 2017-09-14