• ベストアンサー

Excel VBA について

ExcelのVBAのコードでB列の1カ所の「zz2300」を取得したいのですが、 どういう記述をすればよろしいのでしょうか。 ※その列には同じ文字は存在しません。 test=Range("b65535").End(xlUp).Rowの定義があるのですが使えますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

もし、「B」列以外の列には「zz2300」が全く存在しない、そのシートに「zz2300」は1個だけ、なら、 Sub Test_01() MsgBox (Cells.Find(”zz2300”).Row) End Sub だけで、何行目にあるか表示できます。 しかし、他の列に「zz2300」が存在する可能性があるのでしたら、 Sub Test_01() MsgBox (Range("B:B").Cells.Find("zz2300").Row) End Sub Range("B:B")で、「B」列を範囲指定します。 なお、「test=Range("b65535").End(xlUp).Row」というのは、エクセルが持っている一番下の行(エクセルに入力可能な最終行)からデータが存在する一番下の行を調べて、その行を「test」に代入しています 例えば、A列縦に「1、2、3」と入っていて、4行目は空白、5行目からまた「5、6」と入っているとします。 このとき、「Range("A1").End(xlDown).Row」とすると、1行目から調べて、空白行が見つかる前の行「3」を返します。 これでは、実際の「6」が返ってこないので、エクセルの一番下の行から上へ調べるのが、 Range("b65535").End(xlUp).Row ですが、エクセルによって、持っている最終行は異なりますので(「65535」はエクセル2003)、数値で指定せず、 Cells(Rows.Count, 2).End(xlUp).Row というように、「Rows.Count」を用います。 これで、エクセルのバージョンに関係なく、また、数値を覚えなくても、すべてのエクセルの最終行が指定されます。 「Rows.Count」の横の「2」は「B」列のことです。 これで、そのバージョンのエクセルで利用できる最終行から上(xlUp)に向かってRow「行」を調べられます。

pigumin
質問者

お礼

回答ありがとうございます。 大変助かりましたありがとうございます。

その他の回答 (2)

  • NuboChan
  • ベストアンサー率47% (785/1650)
回答No.2

例えば Sub B列からb65535という文字列を探して行番号を取得する()  row_num = Range("B:B").Find("b65535").Row End Sub

pigumin
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは Find とか、Application.Match が使えます。

pigumin
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。