[[20180511111848]] 『Endプロパティについて』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Endプロパティについて』(hiro)

最終データが入力されているセルへの移行というプロシージャです。

Cells(ActiveSheet.Rows.Count,1).End(xlUp).Select
試して、実際にそういう動作をするのは確認しました。

しかしなぜそういう動作をするのかが理解ができずにいます。

ActiveSheet.Rows.Countは調べてもよくわからなかったので試したら、エクセルの最大行数が出ました。
しかしCells(1048576,1).End(xlUp).Selectなら、選択されるのは、シート1行目にはならないのですか。

よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


http://officetanaka.net/excel/vba/tips/tips130.htm
 上記に詳しい説明がありますよ。 ^^
では

(隠居じーさん) 2018/05/11(金) 12:16


 追伸
http://www.moug.net/tech/exvba/0050088.html
にも分かりやすい説明が ^^

(隠居じーさん) 2018/05/11(金) 12:32


内容を推敲してるあいだに、回答ついちゃいましたが、せっかくなので投稿しておきます。

>ActiveSheet.Rows.Count
こちらは、調べておわかりになったかと思いますが「エクセルの最大行数」が返ります。

MsgBox ActiveSheet.Rows.Count
↑を人間に解る言葉におきかえると
「アクティブシートの行数を数えてメッセージボックスで表示しなさい」
という意味になります。

Endプロパティのほうは、改めて説明しようとすると難しいですけど、指示された(引数)で与えられた方向に見ていって、データが入っているセルを探してるって言えばいいんですかね・・・

実際に手動操作でやってみたほうがわかりやすいと思いますが、「A1048576」セルを選択した状態でCtrl+↑を押してみてください。
A列になんにもデータ入れてなければ、「A1」セルが選択された状態になりますし、A列のどこかにデータが(数式でも値でも)入っていれば、一番下にあるセルが選択されます。
これをコードにしたものが
>Cells(ActiveSheet.Rows.Count,1).End(xlUp).Select
になります。

ちなみに、(xlUp)っていう引数がよく使われるのは、たとえばA1〜A10にデータが入ってる(かつ、他の行にデータがない)状態で
Cells(1,1).End(xlDown).Select
Cells(1048576,1).End(xlUp).Select
とやれば、どちらも「A10」が選択されますけど、上記のデータのたとえば、A7がブランクだったりすると、
「Cells(1,1).End(xlDown).Select」では、A6セルが選択されてしまいます。(要は歯抜けに対応できない)

なので、最終行を取得したい場合は、シートの最大行数から上に見ていくっていう手段が採用されやすいんだとおもいます。

(もこな2) 2018/05/11(金) 12:44


お二人ともありがとうございます。

Endプロパティの理解について、誤解があったようですね。
特にもこな2さんの説明を読みながらctrl→で何度か試すうちに、Endプロパティに関しては(たぶん、…)理解しました。

質問文のコードの意味は、説明で理解できました。
ありがとうございます。
(hiro) 2018/05/11(金) 17:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.