WindowsXP、Excel2003の環境でマクロ実行時のエラーについて解決法を教えてください。
先日http://okwave.jp/qa5089017.htmlにて、
下記のとおりマクロを教えていただいたものです。
Sub 行の高さの自動調整()
'行の高さの自動調整
Cells.EntireRow.AutoFit
'行を大きくするための倍率
BAIRITU = 1.5
'最終行の指定
MAXGYO = 300
'1行目から最終行目までを順番にチェックするために「IX」変数を使用する。
IX = 1
'IXが最終行以下の場合、この処理を続ける。
Do While IX <= MAXGYO
Rows(IX).RowHeight = Rows(IX).RowHeight * BAIRITU
IX = IX + 1
Loop
End Sub
1回目は正常にマクロを実行することができましたが、
内容を改め再度マクロを実行したところ
「実行時エラー ’1004’
RangeクラスのRowHeightプロパティを設定できません」
とエラーが出ます。
デバックをクリックすると
「Rows(IX).RowHeight = Rows(IX).RowHeight * BAIRITU」
の行がマーカーにて指摘されますがどうすべきかわかりません。
マクロの実行前に、
対象範囲についてセルの保護や結合がないかを確認しましたが、
いずれもありませんでした。
解決法をご教示ください。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
行の高さの制限を超えているのでは?
Excel2003の行の高さは仕様で409ポイントまでとなっています。
■Excel の行の高さと列の幅の制限
http://office.microsoft.com/ja-jp/excel/HA101375 …
下記のコードは、
計算した行高がExcel2003の行高の最大値(409ポイント)を超える場合は、
行高を最大値キッカリに設定します。
また、
'MsgBox IX & "行目 : 最大値に設定します"
の先頭の ' を削除すれば、そのような場合に通知します。
'=====================↓ ココカラ ↓=====================
Sub 行の高さの自動調整_改()
'行の高さの自動調整
Cells.EntireRow.AutoFit
'行を大きくするための倍率
BAIRITU = 1.5
'最終行の指定
MAXGYO = 300
'1行目から最終行目までを順番にチェックするために「IX」変数を使用する。
IX = 1
'IXが最終行以下の場合、この処理を続ける。
Do While IX <= MAXGYO
If Rows(IX).RowHeight * BAIRITU <= 409 Then
Rows(IX).RowHeight = Rows(IX).RowHeight * BAIRITU
Else
'MsgBox IX & "行目 : 最大値に設定します"
'計算上の行高が最大値より大きければ最大値にする
Rows(IX).RowHeight = 409
End If
IX = IX + 1
Loop
End Sub
'=====================↑ ココマデ ↑=====================
ご参考まで。
なるほど!
データ量が大きすぎるセルが一部あり、
そこでうまく処理できず(制限を越えていたために)
詰まっていたのかもしれません。
いただいたコードに書き直したところ、問題なく作業が進みました。
ありがとうございました。
No.2
- 回答日時:
>対象範囲についてセルの保護や結合がないかを確認しましたが、いずれもありませんでした。
「セルの保護がない」とはロックのチェックをはずしているという意味ではないですよね。
「シートの保護」をしていないとの意味ですよね。
「シートの保護」の時に「行の書式設定」にチェックしていないと行の高さは変えられないと思います。
この回答への補足
言葉足らずでした。
セルの保護についてはセルのプロパティからロックを外しました。
それとは別に、シートの保護については設定しておらず、したがって保護されていない状態です。
No.1
- 回答日時:
MAXGYO = 300
IX = 1
この2つ、どういじりました?
また、外の行を修正したりはしてませんか?
多分、引数IXが想定範囲外になったためのエラーではないかと。
この回答への補足
ありがとうございました。
初めに先日の回答者様に書いていただいたものをコピペしたものを使いました。
そのとき、
MAXGYO=100
については私のデータの行数を入力せよとのご指示でしたので
MAXGYO=300
に書き換えました。
他の行に関しては修正はしておりません。
IX = 1
はこのままです。
一度はエラーも無く実行できたはず(・・・正常に完了したのは初めの1回だけだったので、エラーが連発されるうちにどうだったか自信がなくなってきました)なのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/11 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/12/26 12:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/07/05 09:30
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelで連続印刷をするマクロ
-
値貼り付けをしても書式も貼り...
-
行の入れ替えってどうするの?
-
Excelでセル内の数式は残し値だ...
-
「マクロ」の足し算の式を教え...
-
Excel2007 セルを右方向に削除...
-
エクセルで特定文字列の色つけ
-
Excel2007で、太字にした行のみ...
-
Excelで抽出、書き出しを繰り返...
-
並べ替えのマクロで対象行の範...
-
wordのvbaでハイパーリンク設定...
-
エクセル VBA 小数点を含む数字...
-
Excel にて非表示行を探すワー...
-
100行のセルの高さを一括で調整...
-
エクセルの複数シートの保護を...
-
Excelで同じシートのコピーを一...
-
Excelで金銭出納帳。繰越残高を...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
値貼り付けをしても書式も貼り...
-
エクセルで、行ごとの並び替え...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
VBA コピーを有効行までループ...
-
並べ替えのマクロで対象行の範...
-
Excelで周期的に列を削除する方法
-
100行のセルの高さを一括で調整...
-
yyyy/mm/ddの日付に一括変換す...
-
エクセルで連番をマクロで
-
エクセル2003でマクロをおこな...
おすすめ情報