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

kumasanです
久しぶりに必要にかられてVBAを利用することになりました。
Excel 2002 SP3を利用しています

次のようにセル(2,18)にVlookup関数を利用してセル(M2)の値

物品.xlsの中に名前(集中)の中から2列目の値を選択させて
います

Cells(2, 18).Formula = "= VLookup(M2, 物品.xls!集中, 2,
False)"

選択はできています
セル(M2)の値がみつかれば例えばその値が出ています
今回は"○"を表示させています
みつからない場合は、#N/Aとエラー表示されます

さて、ここで、このCells(2,18)にカーソルを持っていき
その値をhantei( Dim hantei As Variant)という変数に
入れようと思い下記のように記載しています

  Range("R2").Select
hantei = Str(Range("R2").Select)

しかし、ここでhanteiの中身を表示すると
セル(M2)の値がみつかっても「true」なかっても「true」と
なって
います

この変数hanteiにより、この行の削除をするか、次の処理に進
むか
判定させたいのですが・・・

どのようにすれば、この判定ができるか教えていただけません

よろしくお願いします。


なお次のようにエラー表示なしにして「true」「false」にし
ても
同じ結果でした
Cells(2, 18).Formula = "= IsError(VLookup(M2,
集中物品.xls!
集中, 2, False))"

よろしくお願いします。

A 回答 (2件)

原因は簡単です。


>Range("R2").Select
>hantei = Str(Range("R2").Select)
とありますが、2行目の式の内容を見てみましょう
Str(Range("R2").Select)とありますが、Range("R2").Selectというのは「R2を選択してね~」というだけで値の取得は全くしません。また、結果は「取得に成功したからTrueを返すね~」というわけでTrueが帰ってくるのです。さらにそれが文字に変換された"True"という結果がhanteiに代入されているわけです。
値を取り出すプロパティーは.Value .Textの2個が存在します。.Valueは中に入っている値を、.TextはExcelで実際にセルで表示されている文字(書式設定で整形された表示)を取り出します。後はおまけで数式を取り出す.Formulaですね。
ですので、値を取り出すのはSelectもせずに
hantei=Cells(2,18).Value
の1行だけでできます。
    • good
    • 0

Iserrorの代りにIsnaを使ってはどうですか

    • good
    • 0

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