• ベストアンサー

Excel2010 マクロ Findで日付の検索

質問です。 Findで日付の関数をしているのですが、ダイレクトで入力した個所は成功するのですが、数式で表示している箇所は失敗します。”実行時エラー91 オブジェクト変数またはwithブロック変数が設定されていません” ネットで調べて、色々試したのですが、上手くいかなくて困っています。ダイレクト入力・数式のどちらでもいける方法はないのでしょうか?よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8050/17206)
回答No.11

#1です。 これなら結果はどうなりますか? Option Explicit Sub test() Dim 検索日付 As Double Dim 日付検索列 As Long Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Worksheets("ハンマリング履歴") '検索日付 = CDate(ws1.Cells(4, 1)) '日付検索列 = ws1.Rows(2).Find(what:=検索日付, LookIn:=xlValues, LookAt:=xlWhole, _ ' searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column 検索日付 = CDbl(ws1.Cells(4, 1)) 日付検索列 = WorksheetFunction.Match(検索日付, ws1.Rows(2), 0) MsgBox 日付検索列 End Sub

hidenori-world
質問者

お礼

返事が遅れて申し訳ありません。 色々考えてくれてありがとうございました。諦めていたのですが、上手くいきました。 数式が入っている日付の検索にFindは使えないんですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (14)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

直接の回答ではないのですが、 エクセルの日付の件で、日付シリアル値などを知らないVBA勉強者もいるようにおもいます。エクセルの日付の扱いは十分勉強(と言っても実情を知るしかないが)が必要な個所だと思います。 ーー http://officetanaka.net/excel/vba/tips/tips131.htm 日付を検索する 田中亨先生のこの記事を読んで、対策が必要かどうかすが蹴る考えることを勧めます。 その他にも、「vba 日付 検索」でGoogle照会すればたくさん記事があります。 本質問の原因がそれらに該当しなくても、是非一読すべきです。  小生も必要性やむつかしさは、判っているのですが、いつも日付の検索をやってないのと、質問者のシートのデータ状況が使えないので、また説明には、長文での説明が必要なのでここではできず、質問者にまず読んでいただくことを願う次第です。 ーー >「Findで日付の関数をしているのですが、ダイレクトで入力した個所は成功するのですが、数式で表示(入力??の結果?)している箇所は失敗します」 の、関数の引数のデータ実例、関数、関数の結果、検索Findのパラメータ(Formulas???)など書いてもらわないと、エラーが出ることの、追試(再現)のしようがないと思いませんか? >日付の関数をしている、とは何?

hidenori-world
質問者

お礼

色々突っ込んでくれてありがとうございました。見直して投稿したつもりなんですけど、誤字・文章の表現力の浅さ等、多々あって申し訳ありませんでした。 >日付の関数をしている、とは何?  → 関数ではなくて検索でした。 >日付の入力個所は最初のセルは2020/5/1と入力して、隣のセルは、数式で+1しています。 ネット(オフィスたなかは、検索したらかなりの確率でトップに表示されるので、分からなかったら目を通すようにしていますが、分かり難いです。)で色々見ても、自分みたいに頭の悪いアホには理解出来ないです。理解出来ていたら、質問していないと思いますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8050/17206)
回答No.3

#1です。 それ以外で思いつくのは,検索日付が2行目に存在しない場合とか,「数式で表示している」というのが =F2+1 というような数式ではなくて =TEXT(F2,"yyyy/m/")&"2" というような数式になっている場合とか... 実際にはどんな数式なんですか?

hidenori-world
質問者

お礼

日付のセルの内容ですが F2は、そのまま 2020/5/1 と入力しています。 G2は、F2+1 H2は、G2+1 と続いています。 2行目の表示形式は書式設定の日付で設定しています。 一度、表示形式を数値にしたりして検索出来ないか試したんですけど、 数式が入力されている場所は駄目でした。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1632/2475)
回答No.2

Find(What:=DateValue(検索日付), LookIn:=xlValues) にしてみてはいかがでしょう。表示形式は質問の画像のように短い日付で。

hidenori-world
質問者

お礼

回答ありがとうございました。試したんですけど、型が一致しませんのエラーが発生しました。

全文を見る
すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8050/17206)
回答No.1

LookIn:=xlFormulas を LookIn:=xlValues にしてください。 ところで日付検察列はなぜ文字列なのですか?

hidenori-world
質問者

お礼

お早い返答ありがとうございました。 すみません。かなり久しぶりにマクロを作ろうと思いまして。ネットの記述を参考にしながら作ってました。列番号を知りたかっただけなので、Integerでしたね。御指摘ありがとうございます。LookIn:=xlValuesに変えたのですが、同じエラーが発生してNGでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロ 日付の検索

    エクセル2000にて検索のマクロを作っています。 オブジェクト変数またはwithブロック変数が設定されていません。とエラーがでます。 どなたか助けていただけませんか? ”メニュー”シートのAボタンを押すと”スケジュール”というシートの今日の日付のセルにカーソルが飛ぶようにしたいと思っています。 ”スケジュール”シートのR2セルに=today() 関数が入っています。 A列に日付が入っています。 Sub Macro3() Dim r2 As String   Application.ScreenUpdating = False  Sheets("スケジュール").Select  r2 = Range("R2").Value   Selection.Find(What:=r2, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate End Sub

  • 改行のあるセルをFindで検索したい

    エクセルです。 A1セルに 「あああ」と入力して、ALT+Enterで改行し、「いいい」と入力しました。 VBAで Sub test() MsgBox Cells.Find(What:="あああ" & Chr(13) & "いいい", LookAt:=xlWhole).Address End Sub として、セル番地を取得したいのですが オブジェクト変数または With ブロック変数が設定されていません。(Error 91) と言うエラーが返ってきてしまいます。 $a$1が返ってきてほしいのですが。 Sub test() Debug.Print Cells.Find(What:="あああ*", LookAt:=xlWhole).Address End Sub で、$a$1が返ってきますが、 できれば改行含む検索ができるようになりたいです。

  • EXCEL マクロでの検索をお教えください

     下記のようなマクロを使いたいのですがこの場合×があるときは良いのですが、  無いときエラーが出ます。どの様にすれば良いのかお教えください。  無いときエラーは オブジェクト変数または With ブロック変数が設定されていません。  となります。 Sub 検索()    Range("K12:K70").Select    Cells.Find(What:="×", After:=ActiveCell, LookIn:= _    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _    xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • エクセル マクロ FIND

    いつも回答して頂き、心から感謝しています。 FINDで特定セルを探し出し、そこを起点にコピーする領域を設定しようかなと考えています。 で、FINDの部分で早くも分からなくなったので質問します。 下記のようなマクロを記述しましたが、FINDの記述の箇所でエラーが発生してしまいます。 何が悪いのかさっぱり分からないので、どなたか教えて下さい。 エラー名:実行時エラー13       型が一致しません。 Sub 作業状態の部分を作業名別に各シートに貼り付ける() Dim b1 As Variant With Worksheets("書面") Set b1 = .Columns("B").Find("作業状態", xlValues, xlWhole, xlByColumns, xlNext) b1.Select End With End Sub

  • マクロでの検索の仕方をお教えください。

      24時間表示でデーター並んでいますが マクロで9:00:00検索をすると21:00:00もヒットしてしまいます セルの書式は yyyy/m/d h:mm 表示は 2013/8/29 9:00 セルには 2013/8/29 9:00:00        2013/8/29 10:00:00 1時間ごとに24時間500日くらいデータがA列にあります  21:00:00 にヒットしないようにしたいのです 宜しくお願いします。 またときにはオブジェクト変数またはWith ブロック変数が設定されていません。 というエラーになるときもありどうすればよいのかわかりません。 どうかよきアドバイスをお願いいたします。

  • マクロ FINDについて

    いつも回答して頂き、とても感謝しています。 マクロを1回実行させた時はすんなりいくのですが、続けて同じマクロを実行させるとFINDの記述の箇所でNothingになり、エラーが発生してしまいます。 引数を『Set 〇〇 = Nothing』でリセットしても駄目でした。しかし、ブックを一度閉じた後、実行すると最初だけはエラーが発生しません。 記述を載せたいのですが、会社で作ったものなので、持ち帰る事もできません。 この説明だけで申し訳ないのですが、対応方法を教えて頂けないでしょうか?宜しくお願い致します。

  • マクロを使用してBook内を検索する方法

    おはようございます。 質問を読んで頂き、ありがとうございます。 私が質問したいことは【マクロを使用してBook内を検索する方法】になります。 正直、マクロには詳しくないのですが色々なサイトを見ながら作っては見たものの希望道理に検索できないのが現状です。 実際に行いたい作業は、sheet1には○○市内の薬局名を入力、sheet2には△△市内の薬局名を入力、sheet3には□□市内の薬局名を入力・・といったように、1つのsheetにその市内にある薬局を打ち込みました。 そこで、マクロを実行し薬局名を打ち込むと、その薬局名の書いてあるセルに飛ぶような設定にしたいのですが、どうも上手くいきません。 例えば、sheet1内でマクロを実行した場合はsheet1内に薬局名があればセルにうまく飛ぶのですが、sheet1内にない薬局(sheet2などにある場合)は【実行時エラー オブジェクト変数またはwithブロック変数が設定されたいません】という表記が出てしまいます。 希望としては、sheet1でマクロを実行しても、全体を検索できるようにしたいのですが、可能なのでしょうか? マクロには以下のように登録しました。 Sub Macro1() ' ' ' a = InputBox("検索したい文字を入力してください。") Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub 稚拙な文章で大変申し訳ないのですが、マクロに詳しい方、ご教授していただけませんでしょうか? よろしく御願い致します。

  • ワードを開くと

    あるマクロの入ったエクセルファイルに書き込んで次にそれが反映されるワードファイルを開くと ビジュアルベーシック 実行時エラー91 オブジェクト変数、withまたはブロック変数が設定されていませんがでます。どうすれば良いでしょうか?

  • Excel VBAマクロで実行時エラー'91'が出てしまいます。

    実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません というエラーが出ます 同じような質問をいくつか見つけました。 FindでTRUEが見つからなくなったときの処理が問題?だと思うんですが、それを解決するために、どうしていいか分かりません。 よろしくお願いします。 AL列にTRUEとある行を削除するマクロです。 処理が正常に終わり、最後にエラーが出ます。 Sub 行削除() lastrow = Range("AL1").End(xlDown).Row i = 1 Dim trow As String Do While i < lastrow trow = Range("AL:AL").Find(What:="TRUE").Row Rows(trow).Delete i = i + 1 Loop End Sub

  • find での検索について

    find での検索について 以下のような繰り返しの処理を作成しました。 (実際のコードよりかなり簡略化して書いています) for 1 to *** a = sheets(1).cells.find(what:=ABC) next a = sheets(1).cells.find(what:=ABC) 常に変化する変数"ABC"を元に他のブックに検索をかけ、データをコピーしてくる 処理をしています。 つまずいているところは繰り返し中の検索は正常に処理出来ているが nextを抜けた後の検索がうまくいかない点です。 具体的には他のブックに検索したい値(変数"ABC")があるのに検索できないというものです。 自分なりに以下のような切り分けを行いました。 1,nextを抜けた後の変数"ABC"の値が他のブックに存在しない変数を取得しているのではないか? と思い直前で変数"ABC"を表示させてみたが正常 2,"ABC"の値に空白や,大文字、小文字等があり検索出来ないのではないか? と思い調べてみたが正常 3,引き数LookInですべてのパターンを試したがうまくいかなかった。 途方に暮れて、手動で検索を行ってみました。 1,エラーで途中で止まってから他のブックをCtrl+Fで検索(マクロの実行途中で止まっているため、検索しようとしていた値、変数"ABC"がすでに検索する文字列(N):に入力されている)するが対象が見つからない。 2,検索しようとしていた値(他のブックに入力されている値)を直接コピーして検索をかけたところ 正常に検索できた 3,おかしいなと思いCtrl+Fで"検索する文字列(N):"をプルダウンメニューをみてみると全く同じ値がありました。試しになんどか交互に手動検索をかけてみましたが変数"ABC"から取得した方では検索できません。 検索しようとしていた値(他のブックに入力されている値)を直接コピーしたほうから検索出来ます。 どちらの値も違いはないように見えます。 どなたかこのような現象に心あたりがあるかたはいらっしゃいますでしょうか?

専門家に質問してみよう