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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

Q&A

解決済

2回答

4333閲覧

変数が設定されていませんと表示されてしまう。

tindalos5538

総合スコア7

VBA

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

0グッド

0クリップ

投稿2016/10/28 01:55

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
ある表の中から条件に該当する行を抜き出すコード「vba」でを組んでいます。
なぜか「MsgBox "****" & t & "は" & FoundCell.Row & "行です。"」
の個所でエラーが発生してしまいます。

###発生している問題・エラーメッセージ
実行時エラー'91'
オブジェクト変数またはWithブロック変数が設定されていません。

###該当のソースコード
Option Explicit
Dim ken As Long
Dim jas As Long
Dim det As Long
Dim i As Long
Dim j As Long
Dim s As Long
Dim t As Long
Dim dtm As String
Dim Founddata As Variant
Dim FoundID As Variant
Dim FoundCell As Variant
Sub Comparison()

Application.ScreenUpdating = False

ken = Sheets("").Cells(Rows.Count, 1).End(xlUp).Row
jas = Sheets("
").Cells(Rows.Count, 5).End(xlUp).Row
i = 1
'1
With Worksheets("抽出データ")

For i = 1 To ken s = .Range("A" & i).Value Set FoundID = Sheets("**").Range("A1:A51").Find(What:=s, Lookat:=xlWhole) '2 If FoundID Is Nothing Then dtm = .Range("C" & i) '3 If dtm >= Date Then '3 Set Founddata = .Range("F1:F" & jas).Find(What:=s, Lookat:=xlWhole) '4 If Founddata Is Nothing Then t = .Range("B" & i).Value Set FoundCell = .Range("F1:F" & jas).Find(What:=t, Lookat:=xlWhole) '5 If FoundCell Is Nothing Then det = Sheets("****").Cells(Rows.Count, 5).End(xlUp).Row MsgBox "****" & t & "は" & FoundCell.Row & "行です。" Else '5 'MsgBox t End If '5 Else '4 'MsgBox "****" & s & "は" & Founddata.Row & "行です。" End If '4 Else '3 End If '3 Else '2 End If '2 Next i 'ループe End With '1

End Sub

###試したこと
エラー発生個所を何度も見直し、変数も間違っていないか確認しました。
###補足情報(言語/FW/ツール等のバージョンなど)
excel 2007

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

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

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

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

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

guest

回答2

0

FoundCellがNothingなのに参照しているからではないでしょうか。
つまりif文の判定条件が逆。
else側と処理を入れ替えるか、if文を次のようにする。

VBA

1If Not FoundCell Is Nothing Then

ここ以外のif文も見直してみてください。

投稿2016/10/28 02:05

ttyp03

総合スコア16998

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

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

tindalos5538

2016/10/28 02:25

回答ありがとうございました。他のif文も見直してみます
guest

0

ベストアンサー

If FoundCell Is Nothing Then
で、FoundCell が Nothing なのに
MsgBox "**" & t & "は" & FoundCell.Row & "行です。"
で FoundCell.Row を参照しようとしているからじゃないでしょうか。
(Nothing のものに *.Row とかドット付のものを呼ぶとエラーになる)


あと、ソースコードにインデントが入ってないと見づらいので、
バッククォート 3 つで囲った方が良いです。
https://teratail.com/help

投稿2016/10/28 02:03

編集2016/10/28 02:09
sk_3122

総合スコア1126

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

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

tindalos5538

2016/10/28 02:32

回答ありがとうございました。解決しました。 ご指摘のインデントですが気をつけていきたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問