質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

5484閲覧

日付から自動で矢印が引けない

hakuran_

総合スコア2

変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2022/01/07 03:28

WBSの作成過程において、予定を条件付き書式で日付を入れると対象のセルの色付けができました。
実績は、色付けではなく日付を入力すると、対象のセルに矢印を引く使用にしたく、
色々と調べてみましたが、エラーメッセージ「オブジェクト変数または with ブロック変数が設定されていません」
と出てしまいます。何がおかしいのかわからず、ご教授いただきたいです。

以下、コードです。

Sub 矢印作成()

Dim rng1 As Range Dim dt As Range Dim rng2 As Range Dim r As Long Dim foundCell1 As Range Dim startCol As Long Dim foundCell2 As Range Dim endCol As Long Dim shp As Range '図形 Set rng1 = ActiveSheet.Range(Range("AZ5"), Range("AZ5").End(xlToRight)) ' 日付入力範囲 Set dt = ActiveSheet.Range("AW1") ' 今日の日付入力セル For Each rng2 In ActiveSheet.Range(Range("AK7"), Range("AK7").End(xlDown)) ' 開始日入力範囲 r = rng2.Row ' 開始日・終了日入力セルの行番号 Set foundCell1 = rng1.Find(rng2, , xlFormulas, xlPart) ' 開始日で検索した時の該当セル startCol = foundCell1.Column ' 検索該当セルの列番号 If rng2.Offset(0, 1) = "" Then ' 終了日が空欄の場合 Set foundCell2 = rng1.Find(dt, , xlFormulas, xlPart) ' 今日の日付で検索した時の該当セル endCol = foundCell2.Column '検索該当セルの列番号 Else ' 終了日が空欄ではない場合 Set foundCell2 = rng1.Find(rng2.Offset(0, 1), , xlFormulas, xlPart) ' 終了日で検索した時の該当セル endCol = foundCell2.Column '検索該当セルの列番号 End If Range(Cells(r, startCol), Cells(r, endCol)).Select Set shp = Selection ' 開始日から終了日までのセル範囲 With ActiveSheet.Shapes.AddLine(shp.Left, shp.Top + shp.Height / 2, _ shp.Left + shp.Width, shp.Top + shp.Height / 2).Line .ForeColor.RGB = RGB(255, 0, 0) ' 線の色 .Weight = 3 ' 線の太さ .EndArrowheadStyle = 2 ' 線の終点のスタイル End With Next rng2

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/01/07 10:59

コードは「コードの挿入」で記入してください。 エラーはどの行で発生していますか?
guest

回答1

0

ベストアンサー

対象のセルに矢印を引く

WBS ということなので、こんなイメージでしょうか?
イメージ説明

オブジェクト変数または with ブロック変数が設定されていません

一般的にはオブジェクトが Nothing の場合にこのエラーが表示されます。

例えば、Find に失敗すると foundCell2Nothing となる為、foundCell2 のプロパティを参照しようとすると上記のエラーになります。

VBA

1Set foundCell2 = rng1.Find(dt, , xlFormulas, xlPart) ' 今日の日付で検索した時の該当セル 2endCol = foundCell2.Column '検索該当セルの列番号

対処方法としては、地道にデバッグするしかありません。

VBA のデバッグ方法としては
F9 でブレークポイントを設定するか
F8 でステップ実行を行い、
[表示] - [ウォッチ ウィンドウ] で変数の中身を確認します。

■ デバッグ実行の例
イメージ説明

投稿2022/01/08 07:34

cx20

総合スコア4646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問