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
수정 아이콘
엑셀을 메일로 보내주시면 도움을 드릴수 있을것 같네요.. 도움이 필요하시면 댓글이나 쪽지 주세요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
139586 [질문] 미슐랭 급 음식점 질문 입니다. [6] 소사이어티게임4724 19/11/18 4724
139585 [질문] 동남아 2박 4일 가는데 예방접종 없이 가도 괜찮나요? [3] Fim2374 19/11/18 2374
139584 [질문] 정전기 방지 아이템 [3] 만두3344 19/11/18 3344
139583 [질문] 입주 청소 좋은데 있나용??? [4] 캡틴개구리2947 19/11/18 2947
139582 [질문] 네이버 아이디를 해킹당한 것 같습니다. [6] 파이몬2711 19/11/18 2711
139580 [질문] 배가본드 멜로 비중크나요? [7] 헤나투3061 19/11/18 3061
139579 [질문] 아이폰 사파리의 즐겨찾기 및 자주가는 사이트 아이콘 크기 관련 질문드립니다. [5] 회색사과3771 19/11/18 3771
139578 [질문] 양평 식당 카페 추천 부탁드립니다 [9] Grundia2811 19/11/18 2811
139577 [질문] pc견적 봐주세요~ [7] 하이아빠3380 19/11/18 3380
139576 [질문] 건강 검진 항목 좀 선택해주세요 [2] CastorPollux2370 19/11/18 2370
139575 [질문] 아이슬란드 겨울 시내버스 질문 [7] Snake2729 19/11/18 2729
139574 [질문] 테니스 커뮤니티? 팬사이트? 는 어디가 있을까요? [5] 기다리다똥된다4371 19/11/18 4371
139573 [질문] (회계) 대손충당에 대한 기초적인 분개문제 질문드립니다 [4] 쿠엔틴 타란티노3397 19/11/18 3397
139572 [질문] 기계식 키보드선택과 로지텍마우스as질문이요. [3] 냠냠주세오3161 19/11/18 3161
139571 [질문] 끓이는 스프와 인스턴트 스프 차이점이 뭔가요 [5] Fysta3519 19/11/17 3519
139570 [질문] 벽지에서 구린내가 나요ㅜㅠ [1] 사이시옷4069 19/11/17 4069
139569 [질문] [LOL] 카나비가 커즈와 비교할 정도로 잘 하는 선수인가요? [43] 興盡悲來5000 19/11/17 5000
139568 [질문] 양손잡이용 괜찮은 무선 마우스 추천 부탁드립니다. [5] This-Plus3236 19/11/17 3236
139567 [질문] 무선 이어폰 기존 이어폰/헤드셋이랑 버즈, 에어팟 품질 차이가 있나요? [5] 삼동이3120 19/11/17 3120
139566 [질문] 10평짜리 사무실을 활용해보려 합니다. [4] 햇반3405 19/11/17 3405
139565 [질문] 의사 선생님들께 만니톨에 대해 질문드립니다 [3] 삭제됨3223 19/11/17 3223
139564 [질문] 혹시 오늘 다음아이디 로그인 풀리고 다시 로그인 안 되는분 없으신가요? [2] LG우승2792 19/11/17 2792
139563 [질문] 이 중고컴퓨터 얼마 받을수 있을까요?? [4] DAUM3348 19/11/17 3348
목록 이전 다음
댓글

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