- 締切済み
EXCEL 工程表の作成にて日付を入力されたの下のセルに線を引くマクロの作り方
いつもこのサイトを参考にさせていただいております。 QNo.1538992を参考に自分でも工程表を作成していましたが、 日付の開始日と終了日を判定して線を自動的に引くマクロの作成方法を教えて頂けませんでしょうか。 実際にはセルC4に日付を入力しD4は=C4+1,E4は=D4+1といったような感じで 3ヶ月の表を作成します。 縦軸のセルA欄には作業の開始日を、セルB欄には作業の終了日を入力します。 セルの横軸の日付を参照して△ーーーーーー○をオートシェイプで自動的に書きたいのです。 三角は開始、○は終了で、その間をオートシェイプの線で書きます。 できれば、作業の終了日を入力した段階で自動的に線を引ければありがたいのですが…。 以上、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
こんなのは、出来合いのソフト(フリーやシェアウエアや製品)を使うべきと思います。 仕事用ソフトはVBAが自在にできないと、作成が難しいと思います。 質問者の場合経験はどれほどか判りませんが、相当聞きまくらないと 完成しないでしょう。次々と欲が出てきますし。 ーー まあ言うだけなのもと思い、お遊び程度のサンプルを作ってみました。質問と趣旨が違う点はあると思いますが、これ以上は、複雑になったり、難しい知識が要ったり色々しますので。 Sub test1() ActiveSheet.DrawingObjects.Delete d = Range("a65536").End(xlUp).Row '-- For i = 2 To d ym = DateSerial(Year(Cells(i, "A")), Month(Cells(i, "A")), 1) Cells(20, "X") = ym f = Application.WorksheetFunction.Match(Range("X20"), Range("C1:N1"), 0) + 2 'MsgBox f ym = DateSerial(Year(Cells(i, "B")), Month(Cells(i, "B")), 1) Cells(20, "X") = ym e = Application.WorksheetFunction.Match(Range("X20"), Range("C1:N1"), 0) + 2 ' MsgBox e l = Cells(i, f).Left + 5 t = Cells(i, "c").Top + Cells(i, "C").Height * 0.2 w = Cells(i, e).Left + Cells(i, e).Width - 10 - Cells(i, f).Left H = Cells(i, "c").Height * 0.8 ActiveSheet.Shapes.AddShape(msoShapeRightArrow, l, t, w, H).Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 11 Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) Next End Sub ーー 例データ A1:M5 開始日 終了日 06年12月 07年1月 07年2月 2006/12/1 2007/8/31 2007/3/12 2007/9/25 横方向にブロック矢印が表示される 2007/2/5 2007/5/30 2007/6/1 2007/6/30 上記でシート第1行06年12月は書式でこう見えているが、値はこの行は全て各月の1日の値(日付シリアル値)が入っている。 ーー 日付単位にしてないのが問題だろうとわかっていますがが、・・。 (X20セルは中間ワークのセルですが、小生変数でうまく行かなくて、逃げでとりあえず、これを使う羽目になったもの)