アプリ版:「スタンプのみでお礼する」機能のリリースについて

今月入ってVBAの勉強を始めた者です。
勉強にと、webで見つけた工程表のコードを読みながら作りたいモノへ改良しようとおもったのですがうまく行きません。
C列:開始日 D列:終了日
E2~月
E3~日
E4~曜日
E5~オートシェイプ描画欄
開始日と終了日を入力すると矢印が作成・変更される。
という仕様になっていますが、1日からの開始だと矢印が2日多く先まで矢印が引かれてしまい、終了日がズレてしまいます。2日以降の開始日であればズレないのですが、どこを直したらよいでしょうか。
 また、表の最終列が変化するのですが、ForNext関数を使用する際、その変化に対応させたいのですがどのようにしたらよいでしょう。

コードは下記の様です。宜しくお願い致します。

Private Sub Worksheet_SelectionChange(ByVal target As Range)

' 工程ライン作成
Const ORG_DATE As Date = #4/1/2012# '開始年月日
Dim myDate As Date '処理中の日付を表す変数
Dim X1 As Single
Dim Y1 As Single
Dim X2 As Single
Dim Y2 As Single
Dim kiten As Range
Dim Kikan As Long
Dim Start As Long
Dim i As Long

If target.Column = Range("C:D").Column Then

myDate = ORG_DATE

On Error Resume Next
For i = 5 To 30
ActiveSheet.Shapes("KOUTEIline " & i).Delete
Next i

For i = 5 To 30
Start = Cells(i, 3).Value - myDate
Kikan = Cells(i, 4).Value - Cells(i, 3).Value

X1 = Range(Cells(1, 1), Cells(1, 4 + Start)).Width
Y1 = Range(Cells(1, 1), Cells(i - 1, 1)).Height + Cells(i, 1).Height / 2
X2 = X1 + Range(Cells(i, 4 + Start), Cells(i, Start + 4 + Kikan)).Width
Y2 = Y1

With ActiveSheet.Shapes.AddLine(X1, Y1, X2, Y2)
.Name = "KOUTEIline " & i
.Line.EndArrowheadStyle = msoArrowheadTriangle
.Line.Interior.Color = vbRed
.Line.Weight = 4
End With

Next i
End If

End Sub

A 回答 (1件)

確認していないけど、



X2 = X1 + Range(Cells(i, 4 + Start), Cells(i, Start + 4 + Kikan)).Width

X2 = Range(Cells(1, 1), Cells(1, Start + 5 + Kikan)).Width

とすればいいんじゃないかな。
    • good
    • 0
この回答へのお礼

おっしゃるとおりでした。
ありがとうございます( ^^*)

お礼日時:2012/03/20 00:21

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