前提・実現したいこと
初心者ですが、VBAを用いて簡易的な進捗管理シートを作ろうと思っています。
概要としては、タスクと日付を入力し、開始日と終了日を事前に用意してあるカレンダー?上にバーとして表示する
よくあるものを作りたいと思っています。
発生している問題・エラーメッセージ
エラーメッセージは出ていませんが、実行をしてもバーが描画されないといった状況です。 問題がどこなのかもよくわかっていません・・・
該当のソースコード
Option Explicit Private Sub cmdSuchedule_Click() Dim ws1 As Worksheet Dim i As Long Dim st1 As Range, en1 As Range Dim dayEnd1 As Long, rowEnd1 As Long Dim rngStart1 As Range, rngEnd1 As Range Dim xStart1 As Single, yStart1 As Single, xEnd1 As Single, x1 As Single, y1 As Single Set ws1 = ActiveSheet With ws1 dayEnd1 = .Cells(6, Columns.Count).End(xlToLeft).Column 'カレンダー上の最終日付列の取得 rowEnd1 = .Cells(Rows.Count, 4).End(xlUp).Row 'タスクの最終行の取得 On Error Resume Next For i = 8 To rowEnd1 If Cells(i, 5) <> "" And Cells(i, 6) <> "" Then '開始予定日と終了予定日の対応列を設定する Set st1 = .Cells(6, WorksheetFunction.Match(.Cells(i, 5), .Range(.Cells(6, 11), .Cells(6, dayEnd1)), 0)) '開始予定日のカレンダー上での対応列を設定 Set en1 = .Cells(6, WorksheetFunction.Match(.Cells(i, 6), .Range(.Cells(6, 11), .Cells(6, dayEnd1)), 0)) '終了予定日のカレンダー上での対応列を設定 '開始予定日と終了予定日の両方が見つかればバーを描画する Set rngStart1 = .Cells(i, st1.Column) 'バーの描画開始セルの設定 Set rngEnd1 = .Cells(i, en1.Column + 1) 'バーの描画終了セルの1日後を設定 xStart1 = rngStart1.Left 'バーの描画開始位置のX座標 yStart1 = rngStart1.Top + 4 'バーの描画開始位置のY座標 xEnd1 = rngEnd1.Left 'バーの描画終了位置のX座標 y1 = rngEnd1.Height - 70 'バーの高さ方向の幅 With .Shapes.AddShape(msoShapeRectangle, xStart1, yStart1, xEnd1 - xStart1, y1) 'オートシェイプでバーを追加 .Fill.ForeColor.RGB = RGB(255, 255, 255) 'バーの色を指定 .Line.ForeColor.RGB = RGB(0, 0, 0) '枠線の色を指定 End With End If Next i '次の行へ End With End Sub
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/21 06:58