• ベストアンサー

エクセルVBAでUsedRangeの範囲について

たとえば、新たにワークシートを挿入し、A1とC3のセルにのみ入力し、他のセルには一度も入力や書式設定をしなかった場合、 MsgBox ActiveSheet.UsedRange.Addressは、当然 $A$1:$C$3 を返しますね。 この場合、仮にD列から右に非表示の列があってもUsedRange.Addressは変わりません。 ところが、4行目以下に非表示行があった場合は何故か非表示行までの範囲がUsedRange.Addressに含まれてしまいます。 仮に上記の入力状態のままで、20行目とF列を非表示にすると、不思議なことに $A$1:$C$20 が返ってきます。 どうしてUsedRangeの取得では、行と列との非表示の場合の取り扱いが異なるのでしょうか? ( ̄∇ ̄; ?( ̄□ ̄; ? Σ( ̄0 ̄;)?

質問者が選んだベストアンサー

  • ベストアンサー
noname#262398
noname#262398
回答No.3

あまり細かい事を気にせずに、そういうもんだと考えてしまえば幸せになれるでしょう。 それだと回答にならないので、 行を非表示にしなくても、行高を変更しただけでUsedRangeの範囲に含まれるようです。列幅は関係ないようです。 それで、想像なのですが、 列や、UsedRangeの範囲、ズーム、ウインドウの分割等は、シートの情報で、 セルの値・書式、行の高さや表示・非表示等は、UsedRangeの情報になっている、 という事なのかも知れません。 ブックを保存する時や、エクセルの何か機能を使う時、それらの情報をエクセルに認識させて動作させているんじゃないでしょうかねぇ。

merlionXX
質問者

お礼

NNAQさま、「切り取り不可」につづきまたもやありがとうございます。 > 行高を変更しただけでUsedRangeの範囲に含まれるようです。列幅は関係ないようです。 これも新たな驚きです。知りませんでした。 (^0_0^)ナルホド まあ、こういうものだと覚えてわたしも幸せになります。 (≡^∇^≡) ありがとうございました。

その他の回答 (2)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

> でも、ワークシートの使用範囲外の行がフィルターで非表示になる場合ってどんな場合でしょうか? それよりも、先にお聞きしたいのですが・・・ > A1とC3のセルにのみ入力 なのに > 20行目とF列を非表示にする 場合ってどんな場合でしょうか? 使用範囲外の行を・・・

merlionXX
質問者

お礼

a7awuさま、何度もありがとうございます。 いえ、別に特定のケースを想定しているわけではないのです。 UsedRangeの範囲について、当初自分では何かデータが入力されたセルを結ぶ矩形だと思っていました。 ところがまったく入力しなくとも色を変えたり、フォントを変更しただけでもUsedRangeの範囲が広がることに驚きました。 そして何をすればUsedRangeになるのかを実験していてこの現象に気づいただけです。 特に実用的な意味はないでしょうが気になったものですから。 使用範囲外の行を非表示にはいくらでも出来ますが、使用範囲外の行をフィルターで非表示には出来ませんよね?

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

フィルタの関係で、そういう 仕様 になったものと思いますよ。 フィルタ状態か否かで UsedRange の範囲が変わったら使いにくいと思いませんか? 列方向には、フィルタが掛からないから・・・ と推測しますが・・・

merlionXX
質問者

お礼

ご回答ありがとうございます。 フィルタの関係ですか。 でも、ワークシートの使用範囲外の行がフィルターで非表示になる場合ってどんな場合でしょうか?

関連するQ&A

専門家に質問してみよう