OpenOffice.org Basicでガントチャート
OpenOffice.org Basicを使ってガントチャート作成用マクロ ガントチャートforOOoを開発する手順を紹介していきます。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
データの初期設定 その3

プロパティの作成時にも多少触れましたが、このガントチャートではセルの単位を1日、1週間、10日間、1月間という4段階の調整ができるようになっています。そこで、描画の列数とこのセルの単位から描画する工程表の最終日を計算する必要があります。この作業にはいくつかの条件判断と面倒な計算を伴うので、これも関数として宣言してしまいます。

Sub CulcEndDate

    Dim y As Integer
    Dim m As Integer
    Dim d As Integer
    Dim wk As Date
    
    wk = oProperty._BeginDate
    y = Year(wk)
    m = Month(wk)
    d = Day(wk)
    
    With oProperty
        
        Select Case ._CellUnit
            Case CELLUNIT_DAY
                ._EndDate = ._BeginDate + ._DrawColumns
            Case CELLUNIT_WEEK
                ._EndDate = ._BeginDate + ._DrawColumns * 7
            Case CELLUNIT_10DAYS
                
                ._BeginDate = DateSerial(y, m, 1)
                
                d = ._DrawColumns mod 3
                m = m + ._DrawColumns / 3 - 0.5
                y = y + m / 12 - 0.5
                m = (m - 1) mod 12 + 1
                
                If d = 0 Then
                    ._EndDate = DateSerial(y, m, 1) - 1
                Else
                    ._EndDate = DateSerial(y, m, d * 10)
                End If
                
            Case CELLUNIT_MONTH
                
                ._BeginDate = DateSerial(y, m, 1)
                
                m = m + ._DrawColumns
                y = y + m / 12 - 0.5
                m = (m - 1) mod 12 + 1
                ._EndDate = DateSerial(y, m, 1) - 1
                
        End Select
        
    End With
    
End Sub

計算結果は、プロパティ型にある_EndDate変数に保存することにしています。
1日間と1週間は単純に1または7を列数に乗算することで取得できますが、10日間と1月間は面倒なので解説します。

まず開始日を年、月、日に分解します。そして、チャートの描画結果に配慮して、開始日を指定月の1日から開始されるように設定します。

この後1月間の場合は、列数を3で割った余りを取得し日付を計算します。また、月に列数を3で割った数値を足します。ここで、0.5を引いているのは実数型から整数型へ変換する際の四捨五入を補正するためです。この計算で得た月数から年を計算します。年の計算の後、月数を12で割った余りから正しい月を取得し、これを使って最終日を取得します。

1月間の場合は列数=月数なので、これを月に足し年を計算します。その後、月数を12で割った余りから月を取得し、最終日を計算しています。

スポンサーサイト

テーマ:OpenOffice.org - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://shinob.blog42.fc2.com/tb.php/113-e5c5fca4
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
COPYRIGHT(C) 2004 POWERD BY FC2 ALLRIGHT RESERVED.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。