[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA FINDメッソドについて』(MOMO)
バージョン:2007
VBA初心者です。
セルA1にシリアル値が入っていて、列Bの中にこのシリアル値が存在すれば、その4つ右のセルにAAAという値を入れる場合のVBAです。その一部です。
Dim HIZUKE As Date
HIZUKE = Range("A1").Value
Dim MMM As Range
Set MMM = Columns("b").Find(WHAT:=HIZUKE) If MMM Is Nothing Then MsgBox "該当データ無し" Else MMM.Offset(0, 4).Select ActiveCell.Value = "AAA" End If
ここで列BにセルA1と同じシリアル値が入っていた場合はきちんと稼働するのですが、計算式で表示されていた場合に"該当データ無し"となってしまいます。
例えばセルA1に2010/5/14で表示されるシリアル値を入れていたとします。
そして列Bのどこかに 値でなく計算式を入れて 2010/5/14と表示をさせてた場合「例:=TODAY()」 に、きちんと動くようにしたいのです。どなたか、ご教授願います。
似たようなHNですね^^
Findメソッドの引数は省略しないようにしましょう。 前回の検索時の設定を引き継いでしまうので。
原因はLookInのパラメータがxlFormulasになっているからだと思います。 xlValuesに治すと大丈夫だと思います。
あと、気になるのはAfterの引数でActivecellがColumns("b")に無いとエラーになるので 下のようにしてみてはどうでしょうか?
Sub test() Dim HIZUKE As Date
HIZUKE = Range("A1").Value
Dim MMM As Range With Columns("b") Set MMM = .Find(What:=HIZUKE, After:=.Cells(.Cells.Count), LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) End With If MMM Is Nothing Then MsgBox "該当データ無し" Else MMM.Offset(0, 4).Value = "AAA" End If End Sub
(momo)
試してみたのですが、この場合は文字列は認識するものの、シリアル値自体を認識しないようです。(該当データ無し と表示)
FIND メソッドの引数を調べてみます。
(MOMO)
検索値HIZUKEをB列の表示形式に合わせた「文字列」にしてやると うまくいきました。
Dim HIZUKE As String HIZHIZUKE = Format(Range("A1").Value, "yyyy/m/d") ^^^^^^^^ B列の書式に合わせて下さい。 違う方法があるのかもしれませんが。 (純丸)(o^-')b
Dim HIZUKE As String HIZHIZUKE = Range("A1").Text ではいかがでしょう。 (みやほりん)(-_∂)b
↑ A1とB列の表示形式が同じなら、一番簡単でしたね。 (純丸)(o^-')b
上記ページで詳しく検証されてます。 (とおりすがりん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.