プロが教えるわが家の防犯対策術!

いつもこのサイトを参考にさせていただいております。
QNo.1538992を参考に自分でも工程表を作成していましたが、
日付の開始日と終了日を判定して線を自動的に引くマクロの作成方法を教えて頂けませんでしょうか。

実際にはセルC4に日付を入力しD4は=C4+1,E4は=D4+1といったような感じで
3ヶ月の表を作成します。
縦軸のセルA欄には作業の開始日を、セルB欄には作業の終了日を入力します。
セルの横軸の日付を参照して△ーーーーーー○をオートシェイプで自動的に書きたいのです。
三角は開始、○は終了で、その間をオートシェイプの線で書きます。
できれば、作業の終了日を入力した段階で自動的に線を引ければありがたいのですが…。
以上、よろしくお願いいたします。

A 回答 (1件)

こんなのは、出来合いのソフト(フリーやシェアウエアや製品)を使うべきと思います。


仕事用ソフトは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/12007/8/31
2007/3/122007/9/25   横方向にブロック矢印が表示される
2007/2/52007/5/30
2007/6/12007/6/30
上記でシート第1行06年12月は書式でこう見えているが、値はこの行は全て各月の1日の値(日付シリアル値)が入っている。
ーー
日付単位にしてないのが問題だろうとわかっていますがが、・・。
(X20セルは中間ワークのセルですが、小生変数でうまく行かなくて、逃げでとりあえず、これを使う羽目になったもの)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!