Excel VBA質問箱 IV

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

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


6468 / 76734 ←次へ | 前へ→

【75867】Re:Range object をFunctionに引渡す処理について
質問  kanabun  - 14/7/19(土) 20:31 -

引用なし
パスワード
   よこから 失礼します。
以下は、マナ さんがすでにおっしゃってることですが


---------
▼Aoba さん:
> sht.Activate をしないとゆうことでしょうか
> これではどのSheetがActiveになっているかどうか
> 不明でうまくいきません

それはエクセルにとっても同じです。

>  Set sht = Workbooks("Bookname.xls").Worksheets("Sheet1")
>  Set Rng = Range("E4", Range("E65536").End(xlUp))
>  sht.Activate

この1行目は shtという変数に あるブック内の"Sheet1"という名のシートを
指定していますから、shtがどのBookのシートか 明示されています。

ところが、2行目は
> Range("E4", Range("E65536").End(xlUp))
となっていて、どのシートのRange("E4") か どのシートの Range("E65536")
か? 明示されてません。
シートが明示されてないと、エクセルは ActiveSheet が省略されているのだと
と解釈します。

なので、
>  Set Rng = Range("E4", Range("E65536").End(xlUp))
は、
そのときアクティブになっているシートが
Workbooks("Bookname.xls").Worksheets("Sheet1")
すなわち sht でなかったら、Rngは 別のシートの
Range("E4", Range("E65536").End(xlUp))
がセットされていることになります。

[E4]セルというのは どのシートにもあるセルの名前なので、
仮にいま アクティブなシートが sht でなくても、このコードは
"エラーになってくれません"。
なので、ご質問のようなバグ状況が発生するのです。
あなたは shtをアクティブにしたつもりでも、それは Rngをセットしてあと
のことなので、Rngの親シートが sht であることは保障されていないのです!

2行目で sht の E列範囲を 変数Rng にセットしたいのなら、

(sht をアクティブにしてから、
 Set Rng = Range("E4", Range("E65536").End(xlUp)) 
とする方法もあるにはありますが...)

sht をアクティブにしなくても、

 Set Rng = sht.Range("E4", sht.Range("E65536").End(xlUp))

とシートを明示しておけば、済むことなのです。
13 hits

【75860】Range object をFunctionに引渡す処理について Aoba 14/7/19(土) 11:37 質問
【75861】Re:Range object をFunctionに引渡す処理に... マナ 14/7/19(土) 12:02 発言
【75862】Re:Range object をFunctionに引渡す処理に... Aoba 14/7/19(土) 12:36 質問
【75863】Re:Range object をFunctionに引渡す処理に... マナ 14/7/19(土) 13:22 発言
【75867】Re:Range object をFunctionに引渡す処理に... kanabun 14/7/19(土) 20:31 質問
【75871】Re:Range object をFunctionに引渡す処理に... Aoba 14/7/20(日) 9:51 お礼
【75872】Re:Range object をFunctionに引渡す処理に... マナ 14/7/20(日) 10:08 発言
【75873】Re:Range object をFunctionに引渡す処理に... マナ 14/7/20(日) 10:13 発言
【75874】Re:Range object をFunctionに引渡す処理に... Aoba 14/7/20(日) 11:48 お礼

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