|
|
| Excel VBA Macro ・ 行列操作 ・ FAQ |
|
行範囲を指定するコードで実行時エラーが発生するが?
|
|
|
|
Question 017p |
|
 |
 |
|
|
074ページ 2章1-6 定番[C1] ◆ 環境・・ Excel 2003 & Windows XP

74ページの定番[C1] 「行を非表示または再表示する」 を使いたいと思いますが、
2000行位あるリストデータを区分し、あるレベルの部分の行を非表示にしたいと考えております。
最初の行と最終の行の行Noを P.167 の Match関数で取得することができましたが、その値を使って Rows(行1 : 行2).EntireRow.Hidden = True がうまく使えず、デバッグでは「型が違う」と表示されます。
最終行は +8 しないといけない ということもありますが どうすればよいかご教示ください。 基本の問題だろうと思いますがわかりません。 よろしく。
|
|
Answer |
Copyright (C) 2007.6.9 永井善王 |
|
|
拙著「Excel VBA マクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます
あなたが参考にされた [C1] のサンプルは下記コードの上4行で、最下行はあなたが考案されたコードです。
ブック名 = "Book5.xls"
シート名 = "Sheet3"
行 = "2:3" '2:3は例
Workbooks(ブック名).Worksheets(シート名).Rows(行).EntireRow.Hidden = True '非表示
Rows(行1 : 行2).EntireRow.Hidden = True
サンプルの4行目と、最下行のコードの主な相違点は、赤字の部分です。
あなたのコードの前には、Match関数で取得した値を変数 「行1」と 「行2」に代入するコードがあるはずです。
ここでは、それらのコードの代わりとして下記のように入力してみました。
行1 = 2
行2 = 3 + 8
Rows(行1 : 行2).EntireRow.Hidden = True
すると、3行目のコードが赤字 (コロンだけは反転) となり、右上図のエラーが表示されてしまいましたので、3行目のコードを下記のとおりに修正しました。
Rows(行1 & ":" & 行2).EntireRow.Hidden = True
この修正したマクロを実行してみると問題なく動作して、2行目から11行目が非表示になりました。
ご質問文にある「型が違う」エラーは実行時エラーのはずで、このマクロの場合は、変数 「行1」または 「行2」に異常値が代入された状態で 3行目のコードが実行されると、右下図のように表示されます。
つまり、Match関数で取得した行No.が正しくなかった場合に発生すると考えられますが、とりあえず、 [デバッグ]ボタンをクリックします。
すると、左図のように原因コードが黄色く網掛け表示されますから、変数名 「行1」または 「行2」
にマウスポインタを重ねて値を表示させ、根本原因を究明します。
以上で問題解決できるかと思いますが、結果をご連絡ください。
|
|
|
|
|