![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
これ実行時エラー91になってしまうのですがなぜですか?
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 targetRng As Range
Set rng1 = ActiveSheet.Range(Range("C6"), Range("C6").End(xlToRight)) ' 日付入力範囲
Set dt = ActiveSheet.Range("B4") ' 今日の日付入力セル
For Each rng2 In ActiveSheet.Range(Range("A8"), Range("A8").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
ActiveSheet.Range(Cells(r, startCol), Cells(r, endCol)).Select
Set targetRng = Selection ' 開始日から終了日までのセル範囲
With ActiveSheet.Shapes.AddLine(targetRng.Left, targetRng.Top + targetRng.Height / 2, _
targetRng.Left + targetRng.Width, targetRng.Top + targetRng.Height / 2).Line
.ForeColor.RGB = RGB(255, 0, 0) ' 線の色
.Weight = 3 ' 線の太さ
.EndArrowheadStyle = 2 ' 線の終点のスタイル
End With
Next rng2
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#2です 少し補足します
>これ実行時エラー91になってしまうのですがなぜですか?
については先に回答していますが、おそらくエラーを回避しても問題は解決できないように思われます(#3様がコードを書いているので解決できるかもしれませんが)
見方を変えて回答しますと
比較的簡単な表組で入力値も見渡せ間違えが無さそうなのに
何故 Findで見つからないのか・・を考えてみてください
想像として
D6セルに =C6+1 のような数式でフィルしているような事ではないかと
ご質問を斜めから見た回答ですので説明は割愛して参考サイトで
http://officetanaka.net/excel/vba/tips/tips131b. …
https://www.moug.net/tech/exvba/0050163.html
No.3
- 回答日時:
こんばんは
>これ実行時エラー91になってしまうのですがなぜですか?
ご提示のコードが、想定以外の状況を考慮していないからではないかと。
動作できる条件範囲内で利用すれば、一応動作するものと思います。
すでに、No1、No2様のご指摘にもありますが、
・Findメソッドで該当セルが見つからない場合
は想定されていないと思われます。
その他にも、
・A列のデータが8行目のみ、あるいは何もない場合
・B4セルが空白などの場合(←起こり得るのか不明ですが)
等も想定はされていないようです。
シートの状態の説明やなさりたいことの説明がないので、コードからしか推測できませんけれど、勝手に妄想して作成してみたものが以下です。
ご参考にでもなれば。
Sub test()
Dim rng As Range
Dim Rstart As Range, Rend As Range
Dim Cstart, Cend
Dim n As Long
Dim x As Double, y As Double
n = Cells(6, Columns.Count).End(xlToLeft).Column - 2
Set rng = Range("C6").Resize(, Application.Max(1, n))
For n = 8 To Cells(Rows.Count, 1).End(xlUp).Row
Cstart = Cells(n, 1).Value
Cend = Cells(n, 2).Value
If Cend = "" Then Cend = Range("B4").Value
If Cstart <> "" And Cend <> "" Then
Set Rstart = rng.Find(Cstart, , xlValues, xlPart)
Set Rend = rng.Find(Cend, , xlValues, xlPart)
If Not (Rstart Is Nothing Or Rend Is Nothing) Then
x = Rend.Left + Rend.Width
y = Cells(n, 1).Top + Cells(n, 1).Height / 2
With ActiveSheet.Shapes.AddLine(Rstart.Left, y, x, y).Line
.ForeColor.RGB = RGB(255, 0, 0)
.Weight = 3
.EndArrowheadStyle = 2
End With
End If
End If
Next n
End Sub
No.2
- 回答日時:
何処でエラーが返っているか分かりませんが
可能性のある部分はざっくり見て複数あります
Range型変数にオブジェクトが上手くセット出来ず Nothing になっている時にそのRangeオブジェクトのプロパティを参照している所
例えばここ
Set foundCell1 = rng1.Find(rng2, , xlFormulas, xlPart) ' 開始日で検索した時の該当セル
startCol = foundCell1.Column ' 検索該当セルの列番号
Findメソッドで見つからなかった場合
foundCell1はNothingなので
startCol = Nothing.Column は91エラー
対策として
Set foundCell1 = rng1.Find(rng2, , xlFormulas, xlPart) ' 開始日で検索した時の該当セル
If Not foundCell1 Is Nothing Then
startCol = foundCell1.Column ' 検索該当セルの列番号
Else
MsgBox "開始日の該当セルが見つかりません"
Exit Sub
End If
などが考えられます
これは 終了日で検索した時の該当セル に対しても言える事です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
エクセルで日にちを入力すると矢印が自動的に引かれるとか。
Excel(エクセル)
-
EXCEL 工程表の作成にて日付を入力されたの下のセルに線を引くマクロの作り方
Excel(エクセル)
-
vba 指定した日付範囲でセルの色を塗る
Visual Basic(VBA)
-
-
4
Excel日程表:開始日~終了日を自動で色付けたい
その他(Microsoft Office)
-
5
エクセルでガンチャートを作成しましたが、 矢印を自動で引くマクロで、日付日時の参照で、例えば、201
Excel(エクセル)
-
6
カレンダーのイベント期間に矢印を引いてテキスト入力したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
【Excel】 セルの色での判断は...
-
EXCEL VBA セルに既に入...
-
セルをクリック⇒そのセルに入力...
-
excelの特定のセルの隣のセル指...
-
(Excel)数字記入セルの数値の後...
-
エクセルの書式設定の表示形式...
-
Excelでのコメント表示位置
-
枠に収まらない文字を非表示に...
-
エクセルのセルの枠を超えて文...
-
【エクセル】IF関数 Aまたは...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
数式を残したまま、別のセルに...
-
Excelで数式内の文字色を一部だ...
-
Excelで住所を2つ(町名迄と番...
-
文字列として"(ダブルコーテー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
(Excel)数字記入セルの数値の後...
-
セルをクリック⇒そのセルに入力...
-
枠に収まらない文字を非表示に...
-
【エクセル】IF関数 Aまたは...
-
【Excel】 セルの色での判断は...
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
エクセルのセルの枠を超えて文...
-
Excelで数式内の文字色を一部だ...
-
EXCEL VBA セルに既に入...
-
エクセルの書式設定の表示形式...
-
Excel 例A(1+9) のように番地の...
-
数式を残したまま、別のセルに...
-
エクセル オートフィルタで絞...
-
Excelで、「特定のセル」に入力...
-
ハイパーリンクの参照セルのズ...
-
対象セル内(複数)が埋まった...
おすすめ情報