「みんな教えて! 選手権!!」開催のお知らせ

エクセルVBAでマクロwl組む際に、データの入っているセルの最終行を求めることがあります。ここより下にはデータが無いよという事です。変数名としてLastRowを使う人が多いようです。ところが先日、EndRowを使っているのを見つけました。英語としてはどちらが正しいのでしょうか?

A 回答 (2件)

こんばんは。



英語のカテゴリの一人としてお答えするつもりでしたが、やはりExcelそのものを知らないと語れない内容ですね。

表計算のような広がりあり、動的に、最後の行(数)なら、Last Row でしょうね。
Lastは、形容詞で、最後のという意味ですが、また、最新のと言う意味もありますが、順序だてた最後の意味になります。End は、まったくその先がないことだと思います。

また、英語の世界で、EndRow として変数に使うかもしれませんが、End Row では、プロパティの[End]を連想させます。もしも、End Of Rows とすれば、物理行の最後という意味合いから、Ver.2007以降のExcelでは、1048576行目と解釈されると思います。

これに、ついて書いている人がいます。(私は、recordset は使っても、この英文を書いた人のようには考えたことはありませんでした。)

"EndRow Function in Excel"
*Excelにおける、EndRowの機能

I am trying to define EndRow in an Excel recordset in some code I'm writing.
*私は、あるコードを書きながら、Excelのrecordset の中での、EndRowを定義しようと思っている。

My definition of EndRow is currently:
iEndRow = Range("A:A").End(xlDown).Row
*EndRowの私の定義としては、現在の所このように考えている
 (数式)

The excel recordset contains multiple blank rows (distributed through the dataset) and
*(datasetを通して得られる) Excelのrecordset は、 複数の空白行を含んでいる

so iEndRow does not describe the last row containing data.
*したがって、 EndRowは、データを含む Last Row を表していはいない。

It describes the last row of data before the first of the blank rows.
*データの最後の行は、最初のブランクの行の手前にあると言える。

http://forums.devshed.com/visual-basic-programmi …

5 Different Ways to Find The Last Row or Last Column Using VBA
http://www.thespreadsheetguru.com/blog/2014/7/7/ …

[Ways To Find The Last Row]4

実際の私は、ほとんど、LastRow も EndRowも使ったことはありませんが、どちらか一つというなら、一般的に動的な行として、LastRowに軍配があがるように感じています。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。このカテゴリであなたに回答頂くとは思いませんでした。
LastRowの方がいいようですね。参照URLでUsedRangeの記載がありましたが、これは初めて見ました。ちょっと調べてみます。

ところで、LastRowもEndRowも使わないとなると、普段は何を使っているのでしょうか?

お礼日時:2015/02/06 20:17

こんばんは。



>このカテゴリであなたに回答頂くとは思いませんでした。
私は、英語は、あまり得意とは言えませんが、PCでお金をいただくより、英語でお金をいただくほうが多かったです。とは言え、いろんな意味で、今は休業中です。再度、復活をと思っています。
英語とPCの相性は悪いのか、こちらでは、PC系の質問はあまり多くレスがつきません。

>LastRowもEndRowも使わないとなると、普段は何を使っているのでしょうか?
Excelのカテでは、今回、改めて、LastRow を使ったものの、普段、End プロパティで、最終行を取ったとしても、変数に置くことはあまりないと思います。

ループに置くしても、オブジェクトにしても、そのまま代入すればよいからです。
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
とか、
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
とかしてしまうし、そうでなければ、最近、rwとcol とか、y, x などを使ってしまいます。
重要な意味を持つなら、LastRow でも、EndRow とでもしますが、動的に変わる変数は、あまりこだわりをもたないのです。

ところで、
Ways To Find The Last Row
のマクロは、言われて見直しましたが、あまりうまくありませんね。(^^;
思いつくままの、むちゃくちゃっていう感じがします。
コードは書きませんせんが、UsedRangeを使うなら、極めて、それは間違いに近いです。

日本人が、表計算において優れているのか、アメリカ人が劣っているのかは知りませんが、日本のExcel系の掲示板の質問は、海外の掲示板でも、まったく同じことを質問している人がいるということは、本当に驚いてしまいます。その上、回答側のほうは、ボロボロなんですね。(w) そんなわけで、海外の英語の掲示板を読むのはやめてしまいました。特別にできる人は、日本版でも英語版でも、今は、あまり出てきません。

日本人は、無類の表計算好きのようですし、平均的なレベルも高いです。
それと、Visual Basic って、英語なのですが、文法の構造は、英語らしくないような気がします。それと、Excel VBAは、まるで、喧嘩している同士が、別々の開発をして、ひとつに合わせたような一貫性のなさが気になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
VBAの喧嘩は私も同感です。統一された体系になってないように思えます。

お礼日時:2015/02/07 12:09

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

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


おすすめ情報

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