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
수정 아이콘
엑셀을 메일로 보내주시면 도움을 드릴수 있을것 같네요.. 도움이 필요하시면 댓글이나 쪽지 주세요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
138515 [질문] 국산 모바일 게임중에 가장 성공한 게임이 뭔가요? [20] 레너블5649 19/10/14 5649
138514 [질문] 사업장 CCTV 보안업체 선정 고민이 됩니다. [5] 아말감3287 19/10/14 3287
138513 [질문] 미밴드를 사용하는데 정상 심박수는 어느정도일까요? [7] 네파리안3776 19/10/14 3776
138512 [질문] (컴알못) 유튜브를 전체화면으로 볼 때 제목이 뜨지 않게 하는 방법이 있는지요? [4] 코시엔2920 19/10/14 2920
138511 [질문] 같은 남자가 봐도 멋있는 남자의 특징은 뭘까요? [26] 박수갈채15340 19/10/14 15340
138510 [질문] 강남역 근처에 괜찮은 양꼬치집 추천해주세요. [3] 40년모솔탈출3122 19/10/14 3122
138509 [질문] 매트리스 커버 쓰시는 분? [5] 주익균2862 19/10/14 2862
138507 [질문] 눈다래끼 질문 [2] K-12451 19/10/14 2451
138506 [질문] 제주도 택시 이용 문의 [6] 기다리다똥된다3218 19/10/14 3218
138505 [질문] 일기 어플 질문드립니다. [6] 쏘군3552 19/10/14 3552
138504 [질문] 컴퓨터 조립(?)질문입니다. [4] 콜라제로3152 19/10/14 3152
138503 [질문] 32인치 UHD 모니터 가격이 IPS와 VA가 왜이리 차이가 큰가요? [11] 69눈바디5034 19/10/14 5034
138502 [질문] Lg스마트티비로 트위치 못보나요? [27] 세계최강20537 19/10/14 20537
138501 [질문] [자동차]한달만에 히터저항이 나갔는데 블로워모터가 문제일까요? [3] 탄야4130 19/10/14 4130
138500 [질문] 토요일 구로역 근처 8인 회식 추천 부탁드립니다 [3] 바카스2601 19/10/14 2601
138499 [질문] TV 선택에 대해 조언부탁드립니다. (해외구매) [19] 나를찾아서5200 19/10/14 5200
138498 [질문] 유투브 제작시 저작권 질문입니다. [2] Thenn2918 19/10/14 2918
138497 [질문] 롤드컵 시간맞춰 알람받을수 없을까요? [4] 넉살2516 19/10/14 2516
138496 [질문] 이거 맥이는건가요 아니면 칭찬하는 건가요? [53] 스윗N사워6118 19/10/14 6118
138495 [질문] 음악을 찾습니다 (2) [2] bifrost2999 19/10/14 2999
138494 [질문] 가열식 가습기는 조지루시가 짱인가요...? [2] 비싼치킨4382 19/10/14 4382
138493 [질문] 이건 대체 무슨 이상증세일까요? [8] epl 안봄2921 19/10/14 2921
138492 [질문] 남자 아이돌 노래를 찾습니다 [3] 리니시아1965 19/10/14 1965
목록 이전 다음
댓글

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