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
수정 아이콘
엑셀을 메일로 보내주시면 도움을 드릴수 있을것 같네요.. 도움이 필요하시면 댓글이나 쪽지 주세요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
139420 [질문] 드라마 제목 질문 [3] 엘케인2719 19/11/12 2719
139419 [질문] 마이너스가 포함된 숫자의 증가율 질문입니다 [4] 아지노스5694 19/11/12 5694
139418 [질문] 제가 본 것이 무엇인지 궁금합니다. [21] ohfree6360 19/11/12 6360
139417 [질문] 누군가가 제 구글계정 로그인하려하네요 [7] 삭제됨4032 19/11/12 4032
139416 [질문] G4400 + 1050 시스템에서 업글을 하려고 합니다 [15] 덱스터모건4200 19/11/12 4200
139415 [질문] [LOL] 라인클리어 수월한 1인분 탑솔러 누구 있나요? [51] AV KAKARUS no.427777 19/11/12 7777
139414 [질문] 글로벌 궁 정글러를 파보고 싶습니다. [19] 니나노나4019 19/11/12 4019
139413 [질문] 이클립스 이전 커서 위치로 가기 단축키 알 수 있을까요? [3] monkeyD5423 19/11/12 5423
139412 [질문] 30대 중후반 남성 보험 관련 간단한 질문입니다. [3] ManG3529 19/11/12 3529
139411 [질문] 해외 가족여행 예정입니다. [8] 레몬드림♪3749 19/11/12 3749
139410 [질문] 엑박패드 질문입니다. [3] 길갈2841 19/11/12 2841
139409 [질문] 아이패드 질문 하나 더 드립니다. [4] 신이주신기쁨2755 19/11/12 2755
139408 [질문] 어머니가 흰색 실선 차선변경 사고를 내셨는데요. [7] 아라가키유이3803 19/11/12 3803
139406 [질문] CPU 질문입니다. i5-1035G1 vs i3-8145U [5] Titleist5592 19/11/12 5592
139405 [질문] 노래를 찾습니다.. [4] 윤지호2746 19/11/12 2746
139404 [질문] 장기수선충당금 안주는 집주인 [14] 토토누5564 19/11/12 5564
139403 [질문] 패스트푸드점에서 햄버거 치즈가 안녹아 나오는건 왜 그런 걸까요? [17] 플레스트린5071 19/11/11 5071
139402 [질문] 보증금을 안주면 할 수 있는 일이 뭐가 있을까요? [7] 썰렁마왕3368 19/11/11 3368
139401 [질문] 집 계약 잔금을 미리 치뤄도 될까요?? [12] 모어모어5008 19/11/11 5008
139400 [질문] 컴에서 녹스앱플레이어 돌릴때 pc프로그램과 같이 사용 가능할까요? [2] Universe2774 19/11/11 2774
139399 [질문] 채권자변동 조회를 했을때 안 나오는 곳은 어떻게 조회하나요? [2] 럭키가이2781 19/11/11 2781
139398 [질문] 소개팅 어플 상대 믿을만한가요? [12] 갓럭시6728 19/11/11 6728
139397 [삭제예정] 1-2년의 가치를 포기하고 도전해도 괜찮을까요?(직업 관련) [9] 백년후 당신에게4544 19/11/11 4544
목록 이전 다음
댓글

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