[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『currentregion について(VBA) 』(Fun)
A1から始まってA列全体に
データが入力されているかを調べるマクロです。
Range("A1").currentregion.select
i = cells.currentregion.rows.count
(iはlongです)
以下のコードは省略します。
2行目のcells.currentregion.rows.selectというのは
初めて見たのですが、
1列目のRange("A1").currentregion.selectを指しているのですか?
cells(セル全体)→その中のcurrentregion→そのrowsという
考え方であっていますか?
cellsがなくてもいいような気がするのですか。
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
結論からいうと、Range("A1").CurrentRegionとCells.CurrentRegionは同じセル範囲を戻します。 (理由は後述の「面白い現象」で)
CurrentRegionは「空白で囲まれた表の範囲」を戻すプロパティです。 ですので、表例のような場合、A列に歯抜けがあっても、A1:B5までが戻され、 >A1から始まってA列全体に >データが入力されているかを調べるマクロです。 を調べるのには向いてないのではないでしょうか?
表例 [A] [B] [1] 東京 [2] 千葉 [3] 埼玉 [4] 栃木 [5] 山梨
いくつかテストしてみて面白い現象が有りました。(エクセル2007)
表1 [A] [B] [C] [1] 東京 [2] 千葉 [3] 埼玉 [4] 栃木 長野 [5] 山梨 群馬
↑のような表があって、以下の通りにマクロの記録を取ります。 1)A1を選択して、Ctrl + * 背景色を黄 2)C3を選択して、Ctrl + * 背景色を緑 3)2)の状態でCtrl + A 背景色をなし 4)3)の状態でCtrl + * 背景色を赤 手作業で行うと、最後はC3:C5の背景色が赤になります。
この記録を実行すると、なぜかA1:A2が赤くなります。 なんでだろう?
(稲葉) 2014/06/23(月) 09:39
へー、面白いですね。 実験してみた限りですけど・・・
>Range("A1").currentregion.select
この1行目は、存在意義がないように思えます。 少なくとも、ご提示の2行だけみるなら selectする必要性が存在しないです。
意味を持たせるなら、2行目は i = selection.rows.count だと思います。
>i = cells.currentregion.rows.count
この2行目は、通常だと i = Range("A1").currentregion.rows.count になると思います。
なぜCellsを使ったか分かりませんが、 i = Range("A1:Z10").currentregion.rows.count でも同じ結果が返りますので、currentregionプロパティは 指定範囲の左上にあるセルのアクティブセル領域を返すのではないかと思います。
(半平太) 2014/06/23(月) 09:47
>手作業で行うと、最後はC3:C5の背景色が赤になります。
Ctrl+*は、
activecell.currentregion だと仮定すると、そして、マクロの記録は、それを Selection.currentregionと記述してしまうとしたら?
SelectionをActivecellに直してみると、手動と同じになりますけどね!!
( ichinose) 2014/06/23(月) 18:05
>SelectionをActivecellに直してみると、手動と同じになりますけどね!! なるほど! Microsoftのお茶目ですね。
先の表で A1:A5を選択して、エンター3回押して(A4をアクティブセル)、Ctrl+*だと A4:A5が選択され、記録だとA1:A2が選択されることからも、ショートカット キーとマクロの記録がちぐはぐになっていると結論出しちゃっていいみたい ですね。
(稲葉) 2014/06/24(火) 08:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.