- ベストアンサー
Excel VBA について
ExcelのVBAのコードでB列の1カ所の「zz2300」を取得したいのですが、 どういう記述をすればよろしいのでしょうか。 ※その列には同じ文字は存在しません。 test=Range("b65535").End(xlUp).Rowの定義があるのですが使えますか?
- みんなの回答 (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「行」を調べられます。
お礼
回答ありがとうございます。 大変助かりましたありがとうございます。