最後にこれまで解説してきた処理や作成してきた関数を組み合わせて、工程表を更新するUpdate関数を作成します。
これまで同様、処理を簡単に説明すると
- データの読み込む
- 描画するシートの取得する
- チャートの最終日を計算する
- チャートを描画するためにデータの予備処理を行う
- 分類区分により必要なBinデータを生成する
- 描画に必要な最大行数を計算する
- 以降、画面の描画を伴うので更新処理を一時停止させる
- 日付欄を更新する
- 休日の塗り分けを行う
- チャートを描画するための図形を準備する
- 入力済みのセルの内容を消去する
- 分類、項目、工程のデータに合わせて、チャートを描画する
- 停止した描画処理を再開させる
Sub Update LoadAll If Not getProperty Then Exit Sub oSheet = mdlMain.Sheets(oProperty._SheetName) CulcEndDate checkData Select Case oProperty._CategorizeType Case CATEGORIZETYPE_CATEGORY mdlBin.CreateBins(False) Case CATEGORIZETYPE_Person mdlBin.CreateBinsByPerson(False) End Select setMaxRows setScreenUpdating(False) printDateHeader paintHoliday setChartBars setProgressBars '*** Clear Contents *** oSheet.getCellRangeByPosition( _ oProperty._LeftColumn - 1, _ oProperty._TopRow + ChartHeaderRows - 1, _ oProperty._LeftColumn + oProperty._DrawColumns + _ ChartHeaderColumns - 1, _ oProperty._TopRow + oProperty._DrawRows + _ ChartHeaderRows - 2 _ ).clearContents( _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.VALUE _ ) Dim i As Integer RectPos = 0 LinePos = 0 PrgsPos = 0 For i = 1 To mdlBin.Count DrawChart(Bins(i)) Next i For i = 1 To 20 DrawProgressLine(i) Next i setScreenUpdating(True) End Sub
ここで作成したUpdate関数をシート上に配置したフォームのボタンに割り当てれば、この工程表マクロは完成です。
テーマ:OpenOffice.org - ジャンル:コンピュータ
この記事にトラックバックする(FC2ブログユーザー)