プロが教えるわが家の防犯対策術!

お忙しいところよろしくお願いいたします。
Sub Macro3()
Dim FC As Object
Dim FC2 As Object
Dim mae
Dim honjitu
Set FC = Sheets("日毎推移").Range("a:ac").Find(What:=Range("J1").Value, LookAt:=xlWhole)
Set honjitu = Range("ji") --これも良くわかりません。
mae = DateAdd("d", -1, "honjitu")---ここでエラーが出ます。
Set FC2 = Sheets("日毎推移").Range("a:ac").Find(What:=Range("mae").Value, LookAt:=xlwfole)
こんな計算は駄目なんですか。 J1セルに日付が入っています。
j1の日付から一日前を求めてFC2に検索結果を出したいと思っています。

質問者からの補足コメント

  • うーん・・・

    ありがとうございます。
    mae は1日前が取得てきていますが、
    mae = DateAdd("d", -1, Range("j1").Value)

    Set FC2 = Sheets("日毎推移").Range("a:ac").Find(What:=Range("mae").Value, LookAt:=xlwfole)
    実行すると Range メソッドが失敗していますとエラーが出ます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/05/08 10:02
  • うーん・・・

    お忙しいところ早速の回答ありがとうございます。
    Set FC2 = Sheets("日毎推移").Range("a:ac").Find(What: = mae).Value, LookAt:=xlwfole)

    コンパイルエラーになりました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/05/08 10:37
  • うーん・・・

    誠にすいませんが、
    実行すると インデックスが有効範囲にありませんとして止まります。
    maeには一日前の日付が入っています。
    Sub Macro3()
    Dim FC As Object
    Dim FC2 As Object
    Dim mae As Date

    Set FC = Sheets("日毎推移").Range("a3:ac33").Find(What:=Range("J1").Value, LookAt:=xlWhole)

    mae = DateAdd("d", -1, Range("j1").Value)

    Set FC2 = Sheets("日毎推移").Range("a3:ac33").Find(What:=mae, LookAt:=xlwfole)---ここで止まります。

    No.5の回答に寄せられた補足コメントです。 補足日時:2022/05/08 10:54
  • HAPPY

    ありがとうございました。うまくいきました。

    No.6の回答に寄せられた補足コメントです。 補足日時:2022/05/08 11:22

A 回答 (6件)

No.1の者です。



すみません、No.3の方のアドバイスを反映して、どうですか?
xlwfole → xlWhole
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。感謝!

お礼日時:2022/05/08 11:23

No.1の者です。



補足までに。
>LookAt:=xlwfole : 完全に同一なセルだけを検索(xlWhole)

https://www.moug.net/tech/exvba/0050116.html
この回答への補足あり
    • good
    • 0

失礼しました。

 下記でどうでしょうか?

>Range("a:ac")
→セル範囲を、A1:AC99にしています。適宜修正して下さい。

Set FC2 = Sheets("日毎推移").Range("a1:ac99").Find(What:=mae, LookAt:=xlwfole)
    • good
    • 0

初級レベルな昭和ジジィですので最近のExcelは不明ですが。



LookAt:=xlwfole

って最新バージョンのExcelですと、このような引数あるのでしょうか?
    • good
    • 0

No.1の者です。



Rangeは、基本はセルの位置を示すものになりますので、J1などのセルの
場所を指定します。 maeは、セルの位置ではないですよね。

試していませんが、下記でどうでしょうか?
maeの変数に、日付の結果が入っているのなら、その変数をそのまま
使って検索に使えば良いのでは?と思います。

Set FC2 = Sheets("日毎推移").Range("a:ac").Find(What:=mae).Value, LookAt:=xlwfole)

Range("a:ac")も、セルの範囲を指定した方が良いかと。
Range("a1:ac99")など。
この回答への補足あり
    • good
    • 0

おはようございます。



>Set honjitu = Range("ji") --これも良くわかりません。
>mae = DateAdd("d", -1, "honjitu")---ここでエラーが出ます。
ji → J1の間違えかと。 honjituの変数に、セルをセットしています。
DateAdd("d", -1, "honjitu") "honjitu"の位置は、日付を指定します。
"honjitu"ですと、文字を変換しようして、エラーとなっているかと。

下記で、良いかと思います。
mae = DateAdd("d", -1, Range("j1").Value)

変数を使うなら、下記でも可能です。
Set honjitu = Range("j1")
mae = DateAdd("d", -1, honjitu.Value)


変数も、極力型を設定するのが良いかと思います。
Dim mae As Date '日付型として
Dim honjitu As Range ’レンジの型として
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!