重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

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

Excel VBAを勉強中の者です。

A列に日付が連続で入っている表で、A1に入力されている一番古い日付から
昨日の日付までを非表示にし、今日の日付を先頭に表示したいと思っています。

Findメソッドで昨日の日付が入っているセルを検索し、A1セルから昨日のセルまでを
非表示にしようと思い下記のようにしてみたのですができませんでした。

Dim i As Range
Dim x As Byte
Dim y As Byte

Set i = Range("A1:A65536").Find(What:=Date-1)

x = i.Row
Rows("1:x").Hidden = True

または

x = i.Address
Range("A1:x").EntireRow.Select
Selection.Hidden = True


教えてください。
よろしくお願いします。

A 回答 (3件)

おしいですね



Rows("1:x").Hidden = True

x まで " で囲むと x も文字列として扱われてしまいますのでエラーになります。

Rows("1:" & x).Hidden = True

にしてください。
    • good
    • 0
この回答へのお礼

実際に自分の書いたコードを添削していただけるのが一番身に付くようで有難く思っています。ありがとうございます。

その上で他のより良い方法もみなさんに教えていただけたのでとても参考になりました。みなさん、ありがとうございました。

お礼日時:2011/04/17 10:43

質問者のコードの修正回答は、既に出ている。


それとは別に、参考に
Sub test01()
Range("A2", Range("A1:A65536").Find(What:=Date - 1)).Select
Selection.EntireRow.Hidden = True
End Sub
のように変数も必要なく、3行にも出来る。A1セルは見出し文言とみて残した。
    • good
    • 0
この回答へのお礼

すばらしいです。
とても参考になります。
ありがとうございました。

お礼日時:2011/04/17 10:33

こんにちは!


色々方法はあるかと思います。

FINDメソッドではなく、For~Nextでの方法です。
一例です。

Sub test()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) < DateValue(Date) Then
Rows(i).Hidden = True
End If
Next i
End Sub

こんな感じではどうでしょうか?m(__)m
    • good
    • 0
この回答へのお礼

なるほど。全く思い付きませんでした。とても参考になります。
ありがとうございます。

お礼日時:2011/04/17 10:42

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