エンジニアのみなさま、日々の学習本当にお疲れ様です!
また本記事まで足を運んでいただき本当に感謝です。
約3分程度で読めるので最後まで読んでもらえると幸いです。
はじめに
案件でプロジェクト管理のサポートをしております。
Excelを使った進捗管理があり、その資料の一部で 「VBA」 を使ってガントチャートが作成されていました。
今までは最低限の関数・ショートカットを覚えてExcelを使っていましたが、まだまだ知らない機能や関数の存在があることを痛感しております。
せっかくExcelに触れる機会が多くなっているので再学習しようと思い、その第一弾としてVBAを触ってみることにしました。
「もっとこうした方が良いよ!」 や 「うちの会社ではこの様な考えで取り組んでます!」 があれば、ぜひぜひコメントで教えていただけますと幸いです。
VBAとは
Visual Basic for Applications の略。
主にマイクロソフト製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。
引用先:Wikipedia
VBAとマクロの関連性について
VBAはプログラミング言語であるのに対して、マクロは機能です。マクロを作成するためには、アプリケーションごとに異なるプログラミング言語を用います。そしてOfficeアプリケーションであるExcelのマクロ機能を使うために、必要になるプログラミング言語というのがVBAなのです。
引用先:https://www.hitachi-solutions.co.jp/rpa/sp/column/rpa_vol26/
ガントチャートを作成してみる(超簡易版)
ステップ1 : WBSの基本的な設定
Excelを開く
- 新しいワークブックを作成
- セルに「タスク名」「予定開始日」「予定終了日」を入力
ステップ2 : マクロの準備
VBAエディタを開く
- リボンにある 「開発」 をクリック
- Visual Basic をクリック
Microsoft Visual Basicの画面が開きます。
マクロを入力する
- 「挿入」 > 「標準モジュール」 を選択して、新しいモジュールを追加
- マクロを入力
- マクロ入力後、Microsoft Visual Basicを閉じると保存される
以下のコードをMojule1に貼り付けます。
Sub CreateGanttChart()
Dim ws As Worksheet
Dim i As Integer
Dim startDate As Date
Dim endDate As Date
Dim daysDuration As Integer
Dim cell As Range
' WBSが含まれるシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
' データの開始行を指定(ヘッダー行の次から)
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
startDate = ws.Cells(i, 2).Value
endDate = ws.Cells(i, 3).Value
daysDuration = endDate - startDate
' Gantt Chartの開始列を指定(ここでは列Dから)
Set cell = ws.Cells(i, 4 + (startDate - ws.Cells(2, 2).Value))
' Gantt Chartを描画
cell.Resize(1, daysDuration + 1).Interior.Color = RGB(0, 102, 255)
Next i
End Sub
ステップ3 : マクロの実行
- リボンにある「マクロ」を選択
- 作成したモジュールを選択・実行
タスクリストの右側に横棒(ガントチャート)が表示されました!
開始日と終了日に合わせて、横棒が可変で対応できていることが分かります。
さいごに
想像以上の手軽さでVBAを実行できました。かなり感動ですw
今後はコードを拡張しながら以下の困りごとに対して1クリックで解決できる様に出来れば最高だなと考えます!
WBSを活用するにあたっての困りごと
- 予定終了日の期限が近づいているタスクを一目で把握できない
- Backlog(開発者向けの詳細タスクが含まれているもの)との二重管理が煩わしい
- WBS作成後、タスクが複数追加された時の追加作業が手間
- 予実の実績管理が手間
おまけ
弊社のご紹介になります。
▼ コーポレートサイト
▼ Wantedly求人
弊社メンバーは学習した内容を、日々Qiitaの記事にアウトプットしております。
弊社にご興味のある方、まずは求人を見てみてください!
ご応募お待ちしておりますー!