PR

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Cells(Rows.Count, 1).End(xlUp).Row

Visual Basic for Applications


_
久しぶりの勉強会です。


たまには勉強しているところを見せておかないと、遊んでばかりだと思われてしまいますので。



今回はエクセルをデータベース(以下DBと略します)として使用する際に非常に多用しているプログラムです。

多用しているにも関わらず、はなみずの脳ミソに記憶されないのは仕様です。


さてどんなプログラムなのかと言うと。



まず、エクセルで、「Ctrl」+「矢印キー」を使った時の動きをご存知でしょうか。


知らなかった人は、新規作成したブックで実際にやってみましょう。

「A1」のセルを選択した状態で、

:後から気付いたけど、キャプチャー時に選択セルが解除されてる。。。


「Ctrl」+「↑または←キー」を押す。

しーーーーん。

何も起きず。

しかし、

「Ctrl」+「→」を押すと一気に「IV列」まで移動




「Ctrl」+「↓」を押すと一気に「65536行」まで移動

:はなみずマシンはOffice2003。2007の人はもっと移動するはずです


つまりこの操作は、

選択しているセルから最終行または最終列まで移動する!

ように見えます。


ではこの場合はどうでしょう。

:お小遣い表(仮)

この単位だと鳩○総理に負けず、劣らずですね(笑)


そんな事はどーでもいいです。

ではA1のセルから操作してみましょう。



・・・最終行、列に移動しない。。。


つまり、この操作は

「矢印キーを押した方向へ移動し、データがあるセルで止まる」
(データが無い場合は最終行、列で停止)

という事なんですね。



さて本題です。

はなみずがこの操作(プログラム)をDBで利用する目的は。

最終行、最終列のセル番地を割り出す


これに尽きます。

用途は様々ですが、ループの上限値として使う事が多いです。

先程のお小遣い表を例にいぢってみましょう。


先に言っておきますが、今回は「データの開始位置は不変」として扱います。

DBと言っている以上、データが増えることはあっても開始位置に変更があるのは稀だと思いますので。


コピペでGO!
-------------------------------------
Sub データベース()

Dim tate As Integer
Dim yoko As Integer
Dim dateb As Integer

tate = Cells(Rows.Count, 1).End(xlUp).Row ①
yoko = Cells(2, Columns.Count).End(xlToLeft).Column ②
Range(Cells(2, 1), Cells(tate, yoko)).Select    ③

End Sub
-------------------------------------

上で説明した通り、データの開始位置は「A2」としますので。

①1列目の最終行から「Ctrl」+「↑」で止まる位置を取得
 変数tateに取得した行数(今回は”5”」)が代入される

②2行目の最終列から「Ctrl」+「←」で止まる位置を取得
 変数yokoに取得した列数(今回は”5”」)が代入される

※取得した数値が同数なのはたまたまです。

③2行1列目から5(tate)行5(yoko)列目を選択

となります。


最初から

Range(Cells(2, 1), Cells(5, 5)).Select
※2行1列目から5行5列目を選択

としてしまうと、データが増えたときにプログラムの修正が必要になってしまいます。


最後にループカウンターとして使ってみましょう。


コピペでGO!
-------------------------------------
Sub データベース()

Dim tate As Integer
Dim yoko As Integer
Dim i As Integer
Dim goukei As Integer

tate = Cells(Rows.Count, 1).End(xlUp).Row
yoko = Cells(2, Columns.Count).End(xlToLeft).Column

For i = 3 To tate          ①
goukei = goukei + Cells(i, yoko)
Next i

MsgBox goukei & "万円貰った(笑)"

End Sub
-------------------------------------

①このプログラムは5(yoko)列目の数値データを足し算していきます。

 5列の3行目から計算式を開始し、tate(5)行目までループします。

 なぜ3行目からスタートするのかと言うと、2行5列(E5)のセルが数値データではないから。

 電卓で「10+はなみず」なんて計算できませんよね?



実際こんな計算はSUM関数で充分ですが、あくまで「例え」ですのであしからず。

スポンサーサイト

テーマ : コンピュータ - ジャンル : コンピュータ

コメント

No title

遊んでるはなみずさん好きですけどね〔笑〕^^*

おお~!

こんちわ~(^o^)ノ
アドバイス頂きありがとうございます(笑)
改名しました~♪

お勉強会があるんですね!びつくり
お元気そうでなによりでつv-22

Re: No title

> 遊んでるはなみずさん好きですけどね〔笑〕^^*
普段は真面目に遊んでますが、今回はたまたま勉強してみただけです。

Re: おお~!

> こんちわ~(^o^)ノ
ご無沙汰ですね。贈り物は受け取りました。
ありがとうございます。

懲りずにまたお見えになってください。

> お勉強会があるんですね!びつくり
人に言う程、上等な脳ミソしてないので、すぐに揮発してしまうんですよ。
ここに書いておけばすぐに調べられるので。

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。