電子書籍の厳選無料作品が豊富!

同じブックに集計シートと報告書シートがあります。
集計シートには日付の一覧
報告書シートは日付毎にあり
報告書シートの
D2には日付
D5には個数
が記載されており、報告書を記入後ブックを閉じよう(Before Close)とすると集計シートから同じ日付を検索し、検索した日付の4つ下のセルに報告書シートのD5の個数を記入するようにしたいのですが上手くいきません。

現在は下記のように作っております。
ですが上手く動いてくれません。
どのようにしたらよいのでしょうか?
すみませんがよろしくお願いいたします。

  Dim Ran As Range
Dim Rn As Range

  Set Ran = ActiveSheet.Range("D2")
Set Rn = Sheets("集計").Range("C14:AH144").Find(Ran)
Rn.Offset(0, 4).Value = ActiveSheet.Range("D5").Value

A 回答 (2件)

No.1です。



質問文では
>検索した日付の4つ下のセルに・・・
とありますので、

>Rn.Offset(4).Value = ActiveSheet.Range("D5").Value
としたらどうでしょうか?
※ Offset(0, 4) とすると4列右側のセルになります。

丁寧に書けば
Offset(4)はOffset(4,0) になります。

余計なお世話かもしれませんが、
おそらく操作したいSheetをアクティブにしてマクロを実行されるコードだと思いますので、
>Rn.Offset(4)= Range("D5")

だけでも動くと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
無事に思っていた事が出来ました。
本当にありがとうございました。

お礼日時:2017/09/04 23:49

こんばんは!



VBAで日付(シリアル値)を検索する場合はかなり厄介です。

「集計」Sheetの日付(シリアル値)が実データ(直接入力)か、数式によって表示されているかによってコードが変わってきます。

直接入力の日付の場合は
>Set Rn = Sheets("集計").Range("C14:AH144").Find(what:=DateValue(Ran), LookIn:=xlFormulas, lookat:=xlWhole)

としてみてはどうでしょうか?

DATE関数など数式によって表示されているのであれば・・・
>Set Rn = Sheets("集計").Range("C14:AH144").Find(what:=Format(Ran, "m/d"), LookIn:=xlValues, lookat:=xlWhole)

のようにしてみてください。

※ 後者の場合、表示形式の m/d の部分は、yyyy/m/d とか m月d日 などのように
「集計」Sheetの実際の表示形式に合わせてください。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

無事に検索は出来ましたが、最後の値を代入するところが出来ません。
Rn.Offset(0, 4).Value = ActiveSheet.Range("D5").Value

何が間違っているのでしょうか?

お礼日時:2017/09/03 16:00

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