今月入って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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
VBAを使って検索したセルをコピ...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
エクセルVBA シートモジュール...
-
VBAのFind関数で結合セルを検索...
-
B列の最終行までA列をオート...
-
VBAで、特定の文字より後を削除...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBA 値と一致した行の一部の列...
-
vbaでシートより100より大きい...
-
VBAで10行おきにセルの下に罫線...
-
VBA UserFormからの転記で
-
Changeイベントでの複数セルの...
-
セルに値が入っていた時の処理
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
C# dataGridViewの値だけクリア
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報