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

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

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

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

Q&A

解決済

3回答

1822閲覧

変数の設定をする際にエラーが出てしまう(オブジェクト変数またはWithブロック変数...) 

suichan

総合スコア1

VBA

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

0グッド

0クリップ

投稿2022/06/16 08:11

編集2022/06/16 08:12

現在、新規入力した実験データを整理するべく、A4の値と一致するセルを検索し、そのセルの行番号を取得したいと考えております。
そこで、以下のコードを作成し動かしたところ、
「実行時エラー 91
オブジェクト変数またはWithブロック変数が設定されていません」
と表示されてしまいます。
完全にここで詰まってしまい調べたりしてみたのですが解決できず、ご助力頂きたく考えております。何卒よろしくお願いします。

Dim SamePlace As Range Dim lastRng As Range Set lastRng = Sheet11.Cells(Rows.Count, 1).End(xlUp) Set SamePlace = Sheet11.Range(Cells(6, 1), lastRng).Find(what:=Range("A4").Value) '選択中のセルの行の番号を取得する Dim PlaceRow As Long PlaceRow = SamePlace.Row

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

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

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

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

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

guest

回答3

0

ベストアンサー

別ルートで。

Sub sample() Dim rng As Range, v As String Set rng = Sheet11.Range("A6", Sheet11.Cells(Rows.Count, 1).End(xlUp)) v = Sheet11.Range("A4").Value Dim PlaceRow If WorksheetFunction.CountIf(rng, v) > 0 Then PlaceRow = WorksheetFunction.Match(v, rng, 0) + 5 End Sub

投稿2022/06/16 16:58

jinoji

総合スコア4585

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

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

suichan

2022/06/22 01:55

ご回答いただき有難うございました。 お陰様で完成させることが出来ました! お礼が遅くなってしまい申し訳ありません。
guest

0

A4の値と一致するセルがないとそのエラーがでます。
ない場合は、 Is Nothing になりますので、それで場合分けすればいいでしょう。

vba

1 Dim SamePlace As Range 2 Dim lastRng As Range 3 4 Set lastRng = Sheet4.Cells(Rows.Count, 1).End(xlUp) 5 Set SamePlace = Sheet4.Range(Cells(6, 1), lastRng).Find(what:=Range("A4").Value) 6 If SamePlace Is Nothing Then 7 Msgbox "該当値はありません!" 8 Else 9 Dim PlaceRow As Long 10 PlaceRow = SamePlace.Row 11 Msgbox "該当値は" & PlaceRow & "行目です。" 12 End If 13 14 MsgBox PlaceRow

投稿2022/06/16 08:30

hatena19

総合スコア33699

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

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

suichan

2022/06/22 01:55

ご回答いただき有難うございました。 お陰様で完成させることが出来ました! お礼が遅くなってしまい申し訳ありません。
guest

0

下記処理で、Rangeオブジェクトが取得できていないのではないでしょうか。
ブレークポイントを付与して、取得されたオブジェクトを確認してみてください。

vba

1Set SamePlace = Sheet11.Range(Cells(6, 1), lastRng).Find(what:=Range("A4").Value)

「what」に指定された条件のRangeが無い場合は「NoThing」が返されると思います。
ですので、「NoThing」に対して「Row」を参照しようとしてエラーが発生しているのかと思います。

「Row」の代入部分に条件指定を追加するとよいかもしれません。

vba

1If SamePlace Is Nothing Then 2  ' 取得できなかったときの処理 3Else 4  PlaceRow = SamePlace.Row 5End If

※補足ですが、比較はオブジェクトどうしなので「Is」で比較します。

投稿2022/06/16 08:26

編集2022/06/16 08:33
Matsumon0104

総合スコア1005

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

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

suichan

2022/06/22 01:55

ご回答いただき有難うございました。 お陰様で完成させることが出来ました! お礼が遅くなってしまい申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問