PROGRAMMING WORKSHOP

문서작성자동화|시공검측요청서

추가 질문과 요청사항 정리하기

소루션을 만들때, 목록은 사용하는 것만 만들어가면서
사용하겠지..하지만 실제 사용자들은 미리 여러개의 항목번호를 부여하고
사용하고 있다면, 결과가 잘못나온다



그림과 같이 지저분하게 내용도 없는 보고서목록을 목록번호가 미리 부여된
빈 보고서목록도 참조하게 된다
수정해야되겠지...
아래와 같이 유효하지 않은 행은 목록쏘스정보에서 제거시키자


'' 목록시트의 넘버링된것도 모두 실제 목록을 처리하여 보기 흉하다
Set rListSource = modMain.shtCurrentList.Range("A1").CurrentRegion
Set rListSource = rListSource.Offset(1).Resize(rListSource.Rows.Count - 1)
'' 아래와 같이 필요없는 행을 제외시키자
''즉 연번만 있는 것은 Application.CountA함수의 결과값이 1인것은 목록에서 제외
''이럴 경우 중간에 연번만 있는 것이 들어있다면 잘못된 범위를 참조하게 될 것이다
Dim iRow As Integer
For iRow = rListSource.Rows.Count To 1 Step -1
    If Application.CountA(rListSource.Rows(iRow)) = 1 Then
        Set rListSource = rListSource.Resize(rListSource.Rows.Count - 1)
    End If
Next

소루션을 자신이 만들고도
한참 있다가 보면 남이 만든 것 같고, 제삼자의 눈으로 불수 있다
흠결이 많이 보인다
이것을 왜 이렇게 만들었지??멍청하게..!!
아직 목록을 선택하지 않았는데 ,
그림화일을 보는 부분이 크게 열려있으면
사용자가 헷갈린다
상수를 하나 더 사용하면 폼의 크기를 삼단계로 하고
목록의 요청서중 하나가 선택이 되면 멀티탭의 탭도
첫째탭이 열리게 해주는 것이 친절한 소루션
그리고 해당 문서에 그림이 이미 있는 경우와 없는 경우에 따라서
그림버튼을 새그림과 그림교체로 토글링할수 있게 해주어야 보기 좋을 것이고



목록시트를 이동하기 위한 옵션버튼을 이용하면
이미지를 보여주는 탭부분이 가려져버린다



이것은 UserForm의 알려진 버그중의 하나로서, 옵션버튼을 사용하여
이동을 할때 목록상자의 크기가 변해버린다
프로그램은 완벽한 것은 없다
이런 현상이 발생하면 보정할수 있는 방법을 찾으면 된다
상수로 목록상자의 크기를 정해둔후 옮길때마다 크기를 재정의해주면 된다

목록상자의 첫째아이템을 선택하게 코딩을 한후
아래와 같은 콘트롤을 서식을 하는 것을 실행하면


''어떤 콘트롤 값설정
''그리고 모든 콘트롤의 서식을 일관성있게 처리
For Each oX In Me.Controls
    oX.Font.Name = "맑은 고딕"
    oX.Font.Size = 10
Next

콘트롤에 값을 설정하였던 것이 지워지는 경우가 있다
목록상자의 경우 선택된 내용이 지워진다
그래서 서식을 먼저한후 콘트롤의 값을 지정하는 명령의 타이밍을 잘 관찰하면 된다

오버디자인 된 것이 발견되기도 하다
스피너 버튼은 공연히 군더더기이다, 이것을 없애버리면
공들여 만든게 아까우니 그냥 비활성화시켜놓는 것도 좋은 생각이다
이런 것도 몰두하여 만들때는 모른다..
한참후에 객관적 사용자입장에서 보면 , 군더더기임을 알게 된다
가끔 멀리서, 높이서 보는 습관이 프로그래밍이나 살아가는 것이나 똑같다



당초 요청서에 첨부되는 사진은 4장이였으나
12장으로 수정한다..이것은 스크롤바의 최대값을 12개로 해주면 되는 것



그리과 요청서템르릿의 사진양식을 한장에 2개의 사진으로 하여 6개를
만들어 수정하여 만들어놓으면 되겠지
그리고 사진의 위치범위주소를 상수로 준비하였던 것을 추가 수정


''당초 4개의 사진..
''Public Const 사진 As String = "b107,b122,b141,b156"
''12개의 사진이 위치할 범위주소를 상수로 준비
Public Const 사진 As String = "b107,b122,b141,b156,b175,b190,b209,b224,b243,b258,b277,b292"

문제는 PDF화일등을 만들때, 통합문서에 설정된 Print_Area범위의 값에
의하여 PDF화일의 장수가 결정된다
그러니,
요청서에 나타낼 범위가 사진의 갯수에 따라서 결정되어야 한다
그러니 사진갯수를 알아내어 요청서의 경우마다 다르게 인쇄범위를 결정해주면 된다
인쇄범의 결정은..


''사진을 요청서에 올리면서 얻은 iIndex변수가 몇장의 사진을 올렸는지 가름하고..
''사진이 홀수갯수일때는 짝수위치의 사진, 한장에 두개의 사진이 들어가니까..
''split 함수에서 얻어낸 배열은 0부터 시작
If iIndex Mod 2 = 0 Then iIndex = iIndex - 1
sReportLastCellAddress = shtRequest.Range(Split(modMain.사진, ",")(iIndex - 1)).Address


''마지막 사진의 위치셀에서 Offset 열방향 11개 행방향 29개 이동한 위치가 요청서의 마지막 위치
shtRequest.PageSetup.PrintArea = shtRequest.Name & "!" & _
	shtRequest.Range(shtRequest.Range("A1"),  _
	shtRequest.Range(sReportLastCellAddress).Offset(29, 11)).Address

***[LOG-IN]***