これ実行時エラー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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
エクセルで日にちを入力すると矢印が自動的に引かれるとか。
Excel(エクセル)
-
エクセルでガンチャートを作成しましたが、 矢印を自動で引くマクロで、日付日時の参照で、例えば、201
Excel(エクセル)
-
VBAを使用して時間単位で矢印をひきたいです!
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
Excel 例A(1+9) のように番地の...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
【エクセル】IF関数 Aまたは...
-
Excelで数式内の文字色を一部だ...
-
エクセル オートフィルタで絞...
-
エクセル セルの中に縦線が入っ...
-
【Excel】 セルの色での判断は...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
エクセルでオブジェクトを常に...
-
対象セル内(複数)が埋まった...
-
数式を残したまま、別のセルに...
-
エクセルの書式設定の表示形式...
-
EXEL:入力中のセルの数式を非...
-
★★エクセルのテキストボックス...
-
ハイパーリンクの参照セルのズ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
セルをクリック⇒そのセルに入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
枠に収まらない文字を非表示に...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
エクセル オートフィルタで絞...
-
エクセル 足して割る
-
エクセルのセルの枠を超えて文...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
EXCEL VBA セルに既に入...
-
Excel2003 の『コメント』の編...
-
数式を残したまま、別のセルに...
おすすめ情報