プロが教える店舗&オフィスのセキュリティ対策術

しかしエラーになってしまいます。
エラーの原因がわかりません。

シートの1列目のどこかに「test」と入っている行があるのですが

Sub test1()
Dim myRow As Long

With Sheets("Sheet")
myRow = .Column(1).Find(What:="test").Row
MsgBox .Cells(myRow, 1)
End With

End Sub

このvbaコードを実行するとエラーになります。
コードとしては「.Column(1)」で1列目と言う意味で、
.Find(What:="test")で、何行目に「test」があるかを取得するという意味だと思うのですが
実行時エラー438が発生します。

実際にtestと言う文字は2行目にあるのですが
なぜmyRowに2が代入されないのでしょうか?

A 回答 (3件)

こんにちは!



FINDメソッドの細かい使い方は当方が文章で説明するより、↓のサイトが判りやすいと思います。

http://officetanaka.net/excel/vba/cell/cell11.htm

丁寧にやるとすれば
私であれば下記のようなコードにします。

Sub Sample1()
Dim c As Range
Set c = Worksheets("Sheet1").Range("A:A").Find(what:="test", LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
MsgBox "データなし"
Else
MsgBox c.Row
End If
End Sub

※ コード内の
>Range("A:A")

>Columns(1)
にしても大丈夫です。m(_ _)m
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/03/09 16:20

正しくはColumns(1)と複数形です。


sub test()の上にOption explicitが入ってますか?型宣言をしないと変数を使えないようにするものです。名前のトラブルが半減されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/03/09 16:20

Column(1)



の部分、Columns(1) じゃないですっけ。
Sが抜けてる。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/03/09 16:20

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A