SQLの窓

2018年11月21日


Excel でガントチャートを作成するテンプレート : 開始日と日数(工数)を入力

ダウンロード
(マクロ使用分:スケジュール_ガントチャート_カレンダー.xlsm と 非使用分:スケジュール_ガントチャート.xlsx)

WBSガントチャートをExcelで作ってみた というページからダウンロードできる Excel はとても使いやすく( 2か月の表示  )単純にできていました。( 2013年08月30日 で更新が止まっています )

さっそく使ってみましたが、少し問題点があったので『修正』と『追加仕様』を行いました。

1) Workday 関数の使い方が、金曜で日数が終わった場合に土日を含んだ完了日になっていたので修正
2) 日付の入力が、手入力なので VBA の Form + DTPicker でカレンダー入力を可能にした



1) の修正は以下のページを参考にしました
Excel2010:土日なら前の平日を返す(WORKDAY関数・WEEKDAY関数 )

2) の追加仕様は、Form と DTPicker を使用しましたが、VBA におけるイベント処理を詳細にコントロールする術が無く、Form で何をしても選択されている日付をセルに転送するようになっています。

ただ、対象列以外でカレンダーボタンをクリックした場合はエラーにしています。

また、Formを開いた時に DTPicker を開かせる為に SendKeys を使用しているのですが、Numlock が OFF になるバグがあったので、以下のページのコードを利用して対処しました。
VBAの「Sendkeys」についての質問です。


UserForm1
Private Sub DTPicker1_CloseUp()

    ActiveCell.Value = DTPicker1.Value
    
    Unload UserForm1

End Sub

Private Sub UserForm_Initialize()
    
    Call saveNumLock
    
    SendKeys ("%{DOWN}")
    
    Call numLockCheck

End Sub

Module1
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long

Const VK_NUMLOCK = &H90 '「NumLock」キー
Const KEYEVENTF_EXTENDEDKEY = &H1 'キーを押す
Const KEYEVENTF_KEYUP = &H2 'キーを放す

Dim NumLockState As Boolean
Dim keys(0 To 255) As Byte

Sub カレンダー参照_Click()

    Dim no
    
    no = ActiveCell.Column
    If no <> 5 Then
    
        MsgBox ("開始日のセルを選択してください")
        Exit Sub
    End If


    UserForm1.Show
    
End Sub

Sub saveNumLock()
    
    GetKeyboardState keys(0)
    NumLockState = keys(VK_NUMLOCK)

End Sub

Sub numLockCheck()

  '「NumLock」キーがオンだった場合はオンにする。
  If NumLockState Then
    'キーを押す
    keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
    'キーを放す
    keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
  End If
End Sub



使用方法
開始と休日設定に、開始日と休日を設定します(土曜と日曜は休日なのでそれ以外の非稼働日です)

ガントチャートの開始日に日付を入力して、工数に日数を入力します

日付は、月から入力すると現在の年になります

現在以外の年を使用する場合は、18/12/1 のように年の下2桁を最初に入力します

カレンダーボタンで日付を参照できます

カレンダーはただ閉じても日付は選択されます
【Microsoft Officeの最新記事】
posted by lightbox at 2018-11-21 15:16 | Microsoft Office | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり