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
수정 아이콘
엑셀을 메일로 보내주시면 도움을 드릴수 있을것 같네요.. 도움이 필요하시면 댓글이나 쪽지 주세요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
139164 [질문] skt 해외 팬덤의 향후 방향? [11] InoriLee4317 19/11/04 4317
139163 [질문] 아이유 콘서트 종료시간은 언제쯤인가요? [8] Carl5670 19/11/04 5670
139162 [질문] 배우자가 아침밥 차려줘도 안 먹는 유부님 계십니까...?? [54] 마눌6966 19/11/04 6966
139161 [질문] 취미로 맨몸운동을 하고 있는데요. 단백질 섭취에 대해 조언을 구합니다. [7] 보로미어6941 19/11/04 6941
139160 [질문] 토익 학원 질문입니다 [7] BossMON2290 19/11/04 2290
139159 [질문] 롤 박제 관련하여 질문 입니다. [6] 아르비테즈3000 19/11/04 3000
139158 [질문] 영어 회화 스터디 해보신 분 계신가요? [3] vigorian 3293 19/11/04 3293
139157 [질문] 홈페이지형 블로그 제작업체 추천바랍니다. [2] slimeminem3250 19/11/04 3250
139156 [질문] csv 전자담배 중에 무화량 많은 거 어떤 게 있을까요? (칼리번 제외) [7] 구경남b3372 19/11/04 3372
139155 [질문] (LOL)LCK 포스트시즌 변화에대해 의견을 받고싶습니다. [17] telracScarlet3559 19/11/04 3559
139154 [질문] (LOL) if.... 스크와 IG가 붙는다면? [24] 랜슬롯3859 19/11/04 3859
139153 [질문] 아이즈원 음반 해외에서 구입가능하나요? [2] 거북왕2404 19/11/04 2404
139152 [질문] [LOL] skt 대 g2 1경기의 승부처는 언제인 것 같나요? [10] 저격수3547 19/11/04 3547
139151 [질문] 요즘 충치 치료 (레진) 비용이 얼마쯤 하나요? [7] Peril3942 19/11/04 3942
139150 [질문] 현기차가 요즘 이미지가 좋아졌다고 느끼는데요 [52] 청자켓6804 19/11/04 6804
139148 [질문] 지금 홍천여행 갈만한가요? [5] 성큼걸이3297 19/11/04 3297
139147 [질문] 노트북 성능 질문입니다 n4100 [4] 현미녹차4395 19/11/04 4395
139146 [질문] 아는분에게 빔프로젝트를 선물할까 합니다. [8] 레드로키2799 19/11/04 2799
139145 [질문] 컴퓨터 이륙 허가 부탁드립니다. [3] 위미4038 19/11/04 4038
139144 [질문] 동원훈련 연기 [3] 윤지호2372 19/11/04 2372
139143 [질문] 신서유기 음악질문 [4] realist2243 19/11/04 2243
139142 [질문] 첫 동원 예비군 훈련 질문 (짬찌주의) [7] 삭제됨2572 19/11/04 2572
139141 [질문] 아웃룻에 저장되어 있는 메일들이나 스카이프 대화내용들을 텍스트파일로 긁어올 수 있나요? [1] 언네임드2463 19/11/04 2463
목록 이전 다음
댓글

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