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

ガントチャートでは、日付に関する操作が多くあります。休日の設定や工程の開始・終了日などをキーボードで入力しても可能ですが、それでは誤入力の原因になりやすくなります。また視覚的な操作感を向上させるために、カレンダーダイアログを作成し、それを用いることにします。ですが、いくつか前準備があるのでそちらを先に説明します。

休日を扱うために、休日用データシートを追加します。これは特に加工する必要は無く、名称を「休日」としておきます。休日シートは一つの列を1日、行を1月とします。
簡単に説明すると1月1日は「A1」、2月3日は「C2」となります。また、1年後の1月1日は「A13」です。これを実現するためには、工程を作成できる期間の先頭日を決定する必要があります。ここでは、ガントチャートforExcelの例を倣い、2000年1月1日を先頭日とします。
また、セルに入力するデータは平日が0で、休日を-1とします。

次に、休日の操作を簡便にするためのモジュールを作成し、名称を「mdlHoliday」とします。
そして、以下の変数を宣言します。

mdlHoliday

Public HolidaySheetName As String
Public HolidaySheet As Object

また、mdlMainに以下のコードを追加します。

mdlMain

Public FirstDate As Date
 
Public Sub Initialize
    
    '**中略***
    FirstDate = CDate("2000/1/1")
    HolidaySheetName = "休日"
    HolidaySheet = Sheets(HolidaySheetName)
    
End Sub

mdlHolidayには以下の関数を登録します。

  1. IsHolida関数 : 日付からそれが休日か否かを取得する。休日ならTrueを返します
  2. Change関数 : 日付を指定し、休日・平日を切り替えます
  3. getCell関数 : 目的の日付に相当するCellオブジェクトを返します
具体的なコードを以下に示します。

mdlHoliday

Public Function IsHoliday(TargetDate As Date) As Boolean
    
    IsHoliday = getCell(TargetDate).Value
    
End Function
 
Public Sub Change(TargetDate As Date)
    
    Dim oCell As Object
    
    oCell = getCell(TargetDate)
    oCell.Value = CBool(Not oCell.Value)
    
End Sub
 
Private Function getCell(TargetDate As Date) As Object
    
    Dim y As Integer
    Dim m As Integer
    Dim d As Integer
    
    y = Year(TargetDate) - Year(FirstDate)
    m = Month(TargetDate)
    d = Day(TargetDate)
    
    getCell = Cells(HolidaySheet, d, y * 12 + m)
    
End Function

前置きが長くなりましたが、次回からカレンダーダイアログを作成していきます。

スポンサーサイト

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

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