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

작성자:  

 쪼이 (joypupr)

추천:  2
파일:     조회:  1370
제목:   vba로 업무일지를 요약하려고 하는데요
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

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

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

업무일지를 분단위로 작성하고 있는데 이걸 요약해주는 vba를 만들려고 합니다 
1. 월과 일을 inputbox로 받음
2. 요약이라는 4*20 배열 선언 (업무명/내역/카운트/소요시간 합)
3. 업무명과 업무내역이 안겹치면 배열에 추가
4. 업무명은 같아도 업무 내역이 안겹치면 배열에 한줄 추가
5. 업무명과 업무내역이 같은 경우 배열에서 같은 부분을 찾아 카운트+, 소요시간 + 

그런데 아래 내용 가기 전에 월과 일을 찾는 부분부터 막혀서 진행이 안됩니다 

Sub Day_Report()

    Dim 요약(1 To 4, 1 To 20) As Variant
    Dim i, j, k, l, m, n As Integer
    Dim month, day As Integer
    Dim count As Integer
    
    month = InputBox("월을 입력하세요", "Month")
    day = InputBox("일을 입력하세요", "Day")    '/ 달,일 값을 받는다
    
    
    i = Worksheets("기록").Cells(Rows.count, "B").End(xlUp).Row '// B열의 제일 아래 값을 찾는다
    
 
    For k = 1 To 4
        For l = 1 To 20
            요약(k, l) = 0
        Next l
    Next k
    
    If month = 7 Then MsgBox ("month는 7인데!")
    If Worksheets("기록").Cells(502, "B").Value = 7 Then MsgBox ("i 502도 7인데?!")
    
    
    For i = i To 3 Step -1  '/ 가장 아래에서부터 확인
        If Worksheets("기록").Cells(i, "B").Value = month Then     '// 달이 같은지
        
        MsgBox ("같음?")


혹시 몰라서 msgbox로 검토중인데 입력으로 month 7, day에 27을 넣었고 
month가 7이면 박스 띄우고 
비교값(i,B) 가 7이면 박스 띄우게 했는데 둘다 뜨는데 
 
마지막 if문 밑의 메세지박스가 안 뜹니다 ㅠㅠ i 는 지금 502인거 확인했고요 

if문 조건에서 뭐가 틀린걸까요? 

 
[불량 게시물 신고]  
조삿갓실제 엑셀파일을 보아야 해당 셀에 데이터가 어떤 식으로 저장되어 있는지 정확한 원인 파악이 가능합니다만,
제가 짐작하는 원인은 다음과 같습니다.

Dim month, day As Integer
(이렇게 하면 month는 Integer가 아닌 Variant형이 됨)

이 명령을

Dim month As Integer, day As Integer

로 바꾸어 다시 실행해 보시기 바랍니다.

앞에 괄호 안 설명처럼 month가 Variant로 선언된 경우
원칙적으로 InputBox는 Interger 7이 아닌 문자열 "7"을 반환하므로, month는 정수 7이 아닌 문자열 "7"을 저장하고 있을 수 있습니다.
08-03 (13:14)
삭제 ■신고
        
  

작성일 : 2018-07-31(10:49)
최종수정일 : 2018-07-31(10:49)