PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/07/17 11:01:05
Name 산양
File #1 2019_07_17_11;01;05.PNG (49.0 KB), Download : 19
Subject [질문] vba 질문드립니다


연습삼아 공정관리표를 스스로 만들어보고 있습니다.


구현하고자 하는 요소는 다음과 같습니다.
1. 기존에 입력된 월/일/요일 삭제 + 서식 및 셀 병합 초기화
2. 특정 셀에 입력된 연도를 받아와 월/일/요일을 열을 거쳐가며 입력


현재 막힌 지점은 다음과 같습니다.
1. (구현 요소 1.)까진 작동하나, 2.를 구현하기 위해 삽입한 이중for문이 제대로 작동하지 않아 데이터가 입력된 마지막 열의 데이터만 계속 갱신하고 있습니다.

제가 짠 코드 전문과 이해를 돕기위한 사진을 올립니다. 보시고 어떤 부분이 틀렸는지 알려주시면 감사하겠습니다.


Option Explicit
Dim lastRow As Long


Private Sub clearCalendar()

    Dim lastColumn As Integer
    Dim i As Integer
    
    Application.DisplayAlerts = False
' 셀병합 경고창 비활성화 // application 프로퍼티 조작시 항상 원상복구를 염두에 두고 코딩

    
    For i = 3 To 5 Step 1
        lastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
        With Range(Cells(i, "O"), Cells(i, lastColumn))
            .UnMerge
            .ClearContents
        End With
    Next i

' delete? 아예 지정한 부분을 날려버림(셀 지우기) // clear (셀 유지, 서식+내용 지우기) //
' clearcontents(셀 유지, 내용 지우기) // clearformats(셀 유지, 서식지우기)

    Application.DisplayAlerts = True


End Sub

Public Sub automateCalendar()

    Dim i As Integer
    Dim j As Integer
    
    Dim checkYear As Integer
    Dim lastDay As Integer
    
    
    checkYear = Cells(1, "B").Value
    lastDay = Day(DateSerial(checkYear, i + 1, 0))
    
' lastDay는 dateserial 마지막 일 자리에 0 넣으면 전월 말일 나오는 원리를 사용해 날짜값만 추출
        
    Dim lastDayColumn As Long
    Dim lastMonthColumn As Long
' lastDayColumn과 lastMonthColumn은 일자의 마지막에 꼬리물기 하기 위해 선언
        
        
    Dim dateCheck As String
    
        
    Application.DisplayAlerts = False
' 셀병합 경고창 비활성화 // application 프로퍼티 조작시 항상 원복을 염두에 두고 코딩

    Call clearCalendar
' 입력한 연/월/일 범위 서칭해 삭제
  
  
    For i = 1 To 12
        For j = 1 To lastDay
            lastDayColumn = Cells(4, Columns.Count).End(xlToLeft).Column
            Cells(4, lastDayColumn + 1).Value = j
' lastdaycolumn 지정해서 월 스택 쌓을 준비 + 일 입력

            If j = 1 Then
                Cells(4, lastDayColumn + 1).Offset(-1, 0).Value = i
                lastMonthColumn = Cells(3, Columns.Count).End(xlToLeft).Column
            End If
' 초일이면 i에 맞는 월 입력
            
            If j = lastDay Then
                With Range(Cells(3, lastMonthColumn), Cells(4, lastDayColumn + 1).Offset(-1, 0))
                    .Merge
                    .Font.Bold = True
                    .Font.Size = 20
                    .HorizontalAlignment = xlCenter
                End With
            End If
' 말일이면 월 셀들 합병하고 서식 조정
            
            
            dateCheck = Format(DateSerial(checkYear, i, j), "aaa")
' 이중 for 문에 사용할 i, j, 그리고 checkYear까지 합쳐 특정연월일을 만들고, 이를 토대로 특정연월일의 요일을 추출

            
            If dateCheck = "토" Or dateCheck = "일" Then
                Cells(4, lastDayColumn + 1).Font.Color = vbRed
                With Cells(4, lastDayColumn + 1).Offset(1, 0)
                    .Value = dateCheck
                    .Font.Color = vbRed
                End With
            Else
                Cells(4, lastDayColumn + 1).Offset(1, 0).Value = dateCheck
            End If
            
' datecheck를 불러와 토/일요일인 경우 요일, 일 모두 빨간색으로 텍스트 색칠하고 아니면 그냥 요일만 입력
            
            
        Next j
        
    Next i
    
    Application.DisplayAlerts = True
'셀 병합 경고창 활성화

    
End Sub

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
아델라이데
20/02/14 14:00
수정 아이콘
엑셀을 메일로 보내주시면 도움을 드릴수 있을것 같네요.. 도움이 필요하시면 댓글이나 쪽지 주세요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
135683 [질문] 노동요 추천좀 부탁드립니다! [6] 윤가람2757 19/07/21 2757
135682 [질문] 플스 게임 질문드려요 디트로이드 or 라오어... [12] 비싼치킨4056 19/07/21 4056
135681 [질문] 외장하드 엑세스가 불가하다고 나옵니다 [2] LG의심장박용택3419 19/07/21 3419
135680 [질문] 핸드폰 구매에 대한 질문 [8] 당근병아리2827 19/07/21 2827
135679 [질문] 치즈가 갑자기 몸에 안받습니다. [9] 따닥3952 19/07/21 3952
135678 [질문] 트위스트 방식 펜 추천 부탁드려요 수정자2330 19/07/21 2330
135677 [질문] 초등학생 조카 1루수 글로브 추천부탁드립니다. [6] Neoguri2962 19/07/20 2962
135676 [질문] 방탄소년단의 빅히트 임대료 1년에 360억은 손해 아닌가요? [25] 매일푸쉬업8092 19/07/20 8092
135675 [질문] 등산 코스 난이도 별로 추천해 주실 분 있나요? [2] norrell3886 19/07/20 3886
135674 [질문] 냉장고 선택 질문 드립니다(LG, 삼성) [13] 맛있는사이다7798 19/07/20 7798
135673 [질문] 호텔? 에서 쓰레기들 어떻게 처리하나요..? [4] 천우희12595 19/07/20 12595
135671 [질문] 다낭 가족 해외여행 질문드립니다! [2] 부처3603 19/07/20 3603
135670 [질문] 플스4 레이싱 게임 추천 부탁드립니다 [5] 비싼치킨4978 19/07/20 4978
135669 [질문] 몇년생부터 시민의식이 있는, 민주화된 세대일까요? [30] 개념적 문제4299 19/07/20 4299
135668 [질문] 프라하와 체스키크롬로프를 갑니다. [16] 동싱수싱3142 19/07/20 3142
135667 [질문] 소개팅 장소 추천부탁드립니다. [2] 공중전용불곰3008 19/07/20 3008
135666 [질문] 히토미가 먹은 치즈핫도그 어디서 파나요? [1] 공발업나코템플러3209 19/07/20 3209
135664 [질문] 지금 롤 랭겜 상황어떤가요?? [6] 야부키 나코3147 19/07/20 3147
135662 [질문] LA 여행 교통 관련 질문입니다. [6] 적란운2531 19/07/20 2531
135661 [질문] [사진 펑] 헤르페스 인가요? 여드름인가? [9] 토우5100 19/07/20 5100
135660 [질문] 고양이 봉합수술 후 자꾸 긁어서 큰일입니다. 방법이 없을까요? [6] 삭제됨3726 19/07/20 3726
135659 [질문] 아이돌 가수들의 활동주기에 대해... [9] 미하라4361 19/07/19 4361
135658 [질문] 너무 피곤하면 이럴 수도 있나요? 혹은 카페인 부작용일까요? [10] 약쟁이5009 19/07/19 5009
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로