Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2577 / 13645 ツリー ←次へ | 前へ→

【67090】CurrentRegionについて ichi 10/11/3(水) 10:22 質問[未読]
【67091】Re:CurrentRegionについて かみちゃん 10/11/3(水) 10:35 発言[未読]
【67095】Re:CurrentRegionについて ichi 10/11/3(水) 11:02 質問[未読]
【67096】Re:CurrentRegionについて かみちゃん 10/11/3(水) 11:08 発言[未読]
【67099】Re:CurrentRegionについて ichi 10/11/3(水) 11:59 質問[未読]
【67100】Re:CurrentRegionについて かみちゃん 10/11/3(水) 12:05 発言[未読]
【67093】Re:CurrentRegionについて 山猿 10/11/3(水) 10:43 発言[未読]
【67101】Re:CurrentRegionについて 山猿 10/11/3(水) 20:07 発言[未読]
【67123】Re:CurrentRegionについて ichi 10/11/7(日) 11:14 お礼[未読]
【67128】Re:CurrentRegionについて 山猿 10/11/7(日) 16:18 発言[未読]
【67132】Re:CurrentRegionについて 山猿 10/11/7(日) 23:16 発言[未読]
【67137】Re:CurrentRegionについて ichi 10/11/8(月) 12:07 お礼[未読]

【67090】CurrentRegionについて
質問  ichi  - 10/11/3(水) 10:22 -

引用なし
パスワード
   ("Sheet1")にあるData表には空白列;空白行はありません
表は"A1";"E"に書かれています
以下のように書いたのですが
   Sheets("Sheet1").Range("A1")を Range("A5")としても
   結果が変わりません
   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
   今回のように空白列;空白行がなくてもよいのでしょうか
   よろしくお願いいたします
      Sheets("Sheet1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("Sheet2").Range("g1:i2"), _
      CopyToRange:=Sheets("Sheet2").Range("A1"), _
      Unique:=False

【67091】Re:CurrentRegionについて
発言  かみちゃん E-MAIL  - 10/11/3(水) 10:35 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> ("Sheet1")にあるData表には空白列;空白行はありません

Excelのバージョンがよくわかりませんが、
たとえば、Excel2003までの場合ですと、
A1:IV65536まで1行全部もしくは、1列全部が空白になっている行/列がないということですか?
それであれば、かなり重たいファイルなのではないかと思いますが・・・

そうではなくて、

> 表は"A1";"E"に書かれています

とのことですので、A1:E65536まで1行全部もしくは、1列全部が空白になっている行/列がなく、
F列は、空白になっているというこひとですか?

なお、ここで空白というのは、数式等で ="" などでいわゆる長さゼロの文字列、
またはスペース等で空白に見えているセルではありません。

>   Sheets("Sheet1").Range("A1")を Range("A5")としても
>   結果が変わりません

CurrentRegion プロパティのヘルプに書かれているとおり
「空白行と空白列で囲まれたセル範囲」ですので、
A1:A5の間に空白になっているセルがないのであれば、結果は変わりません。
ちなみに、どのようになればいいのですか?

>   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
>   今回のように空白列;空白行がなくてもよいのでしょうか

なくても構いません。

【67093】Re:CurrentRegionについて
発言  山猿  - 10/11/3(水) 10:43 -

引用なし
パスワード
   ▼ichi さん:
>   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
>   今回のように空白列;空白行がなくてもよいのでしょうか
>   よろしくお願いいたします
CurrentRegionというのは、
ひらたくいうと、そこから「ひとつながりになっている領域」という
イメージです。
そのケースでは、A1を基準にしても、A5を基準にしても同じ結果になる
ということでしょう。

もう少し正確に言うと、こんなことになるのでは?

基準のセルから縦、横、斜めに一つずつ見て、
空白でない書込みがなされたセルがあれば、
そこに印をつけていくと、考えてみて下さい。

印がつけられたセルを基準に、上と同じ事を繰り返します。
その作業を可能な限り行った段階で、
それら印をすべて含む最小の矩形領域がCurrentRegionです。

CTRLキーを押したまま「*」を押す作業に相当しますから、
実験してみるとわかります。

【67095】Re:CurrentRegionについて
質問  ichi  - 10/11/3(水) 11:02 -

引用なし
パスワード
   すいません
Excel2003です
それから
表は"A1";"E"ではなく表は"A1";"E20"です


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> ("Sheet1")にあるData表には空白列;空白行はありません
>
>Excelのバージョンがよくわかりませんが、
>たとえば、Excel2003までの場合ですと、
>A1:IV65536まで1行全部もしくは、1列全部が空白になっている行/列がないということですか?
>それであれば、かなり重たいファイルなのではないかと思いますが・・・
>
>そうではなくて、
>
>> 表は"A1";"E"に書かれています
>
>とのことですので、A1:E65536まで1行全部もしくは、1列全部が空白になっている行/列がなく、
>F列は、空白になっているというこひとですか?
>
>なお、ここで空白というのは、数式等で ="" などでいわゆる長さゼロの文字列、
>またはスペース等で空白に見えているセルではありません。
>
>>   Sheets("Sheet1").Range("A1")を Range("A5")としても
>>   結果が変わりません
>
>CurrentRegion プロパティのヘルプに書かれているとおり
>「空白行と空白列で囲まれたセル範囲」ですので、
>A1:A5の間に空白になっているセルがないのであれば、結果は変わりません。
>ちなみに、どのようになればいいのですか?
>
>>   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
>>   今回のように空白列;空白行がなくてもよいのでしょうか
>
>なくても構いません。

【67096】Re:CurrentRegionについて
発言  かみちゃん  - 10/11/3(水) 11:08 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>表は"A1";"E"ではなく表は"A1";"E20"です

だから何?
という感じです。

>>ちなみに、どのようになればいいのですか?

の問いかけにも反応がないですし、
私の下手な説明ですが、わかったのか、わからなかったのか知りたいところです。

【67099】Re:CurrentRegionについて
質問  ichi  - 10/11/3(水) 11:59 -

引用なし
パスワード
   下手な問いかけで申し訳ありません
各シート毎で:CurrentRegionを実行しまして
空白行:列があったりなかったりしていまして
そのつど項目行をコピーしないようにしたかったのです
がうまくいきませんでした
全てコピーはうまくいきました
ありがとうございました


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>表は"A1";"E"ではなく表は"A1";"E20"です
>
>だから何?
>という感じです。
>
>>>ちなみに、どのようになればいいのですか?
>
>の問いかけにも反応がないですし、
>私の下手な説明ですが、わかったのか、わからなかったのか知りたいところです。

【67100】Re:CurrentRegionについて
発言  かみちゃん E-MAIL  - 10/11/3(水) 12:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>各シート毎で:CurrentRegionを実行しまして
>空白行:列があったりなかったりしていまして
>そのつど項目行をコピーしないようにしたかったのです
>がうまくいきませんでした
>全てコピーはうまくいきました

発言種別が「質問」になっているようですが、
何かうまくいかないことがまだあるのでしょうか?

>空白行:列があったりなかったりしていまして

という点がわかりません。

> ("Sheet1")にあるData表には空白列;空白行はありません

は、Sheet1には、空白行、空白列がないのであって、
他にはあるのでしょうか?
そのときにどうしたいのかの説明がないので、何がしたいのかが今ひとつよくわかりません。

【67101】Re:CurrentRegionについて
発言  山猿  - 10/11/3(水) 20:07 -

引用なし
パスワード
   A1:E20 が表ならば、
CurrentRegion は Range("A1:E20")ですよ。

>▼ichi さん:
>   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
>   今回のように空白列;空白行がなくてもよいのでしょうか
>   よろしくお願いいたします
この場合、
F1 :F20 の空白列や 
A21:F21 の空白行に囲まれていますよね。
そういう意味です。

陸地と海面のように考えてもらってもいいですね。

以上は、CurrentRegionの意味の説明です。
普通は A5を基準になんかしません。A1を基準にします。

で、そうした理解をしたうえで、
具体的に何に困っているのか、もう一度、説明してください。

# 有名人のコメント以外は無視ですかね。

【67123】Re:CurrentRegionについて
お礼  ichi  - 10/11/7(日) 11:14 -

引用なし
パスワード
   "具体的に何に困っているのか" 具体的には
"Sheet1"の指定範囲をコピーして"Copy先Sheet"に貼り付けさらに"Sheet2"の指定範囲をコピーして"Copy先Sheet"に貼り付けるようにしていました
しかし"Sheet1"の値が"A"列のみの値が貼り付けられ"Sheet2"は正常に貼り付けられています
どうやら コピー先のセル設定がおかしいのではないかと思い  
 LastRow = sht.Range("A1").CurrentRegion.Rows.Count+2
 "Copy先Sheet"の最下空白行を取得し貼り付けましたら
 うまくいきました お礼がおそくなり申し訳ありません
  この間出張でトライできませんでした
  ありがとうございました
▼山猿 さん:
>A1:E20 が表ならば、
>CurrentRegion は Range("A1:E20")ですよ。
>
>>▼ichi さん:
>>   また、CurrentRegionは空白列;空白行に囲まれた範囲とありますが
>>   今回のように空白列;空白行がなくてもよいのでしょうか
>>   よろしくお願いいたします
>この場合、
>F1 :F20 の空白列や 
>A21:F21 の空白行に囲まれていますよね。
>そういう意味です。
>
>陸地と海面のように考えてもらってもいいですね。
>
>以上は、CurrentRegionの意味の説明です。
>普通は A5を基準になんかしません。A1を基準にします。
>
>で、そうした理解をしたうえで、
>具体的に何に困っているのか、もう一度、説明してください。
>
># 有名人のコメント以外は無視ですかね。

【67128】Re:CurrentRegionについて
発言  山猿  - 10/11/7(日) 16:18 -

引用なし
パスワード
   ▼ichi さん:
>しかし"Sheet1"の値が"A"列のみの値が貼り付けられ
ここが問題のひとつですか?

AdvancedFilterでは「見出し」がとても重要です。
まず、
Sheet1の A1:E1
Sheet2の A1:E1
Sheet2の G1:I2
はどうなっていますか?

CopyToRange:=Sheets("Sheet2").Range("A1")となっていますから、
・Sheet2のA1に見出しがあれば、A列だけにコピーされますし、
・Sheet2のA1がブランクの時は、A:E列にコピーがされます。
たぶん前者でしょう。
まず、この点を確認してみて下さい。

【67132】Re:CurrentRegionについて
発言  山猿  - 10/11/7(日) 23:16 -

引用なし
パスワード
   >CopyToRange:=Sheets("Sheet2").Range("A1")となっていますから、
>・Sheet2のA1に見出しがあれば、A列だけにコピーされますし、
>・Sheet2のA1がブランクの時は、A:E列にコピーがされます。
>たぶん前者でしょう。
>まず、この点を確認してみて下さい。

見出しが書いてあるなら、
CopyToRange:=Sheets("Sheet2").Range("A1:E1")
としなければいけません。

【67137】Re:CurrentRegionについて
お礼  ichi  - 10/11/8(月) 12:07 -

引用なし
パスワード
   Sheet2のA1に見出しがあります
これで了解しました
コピー先がやはりおかしかったのですね
空白行を調べてそこにコピーしてOKとしていました
").Range("A1:E1")
で処理をすべきなのですね
有難うございました

▼山猿 さん:
>>CopyToRange:=Sheets("Sheet2").Range("A1")となっていますから、
>>・Sheet2のA1に見出しがあれば、A列だけにコピーされますし、
>>・Sheet2のA1がブランクの時は、A:E列にコピーがされます。
>>たぶん前者でしょう。
>>まず、この点を確認してみて下さい。
>
>見出しが書いてあるなら、
>CopyToRange:=Sheets("Sheet2").Range("A1:E1")
>としなければいけません。

2577 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free