dポイントプレゼントキャンペーン実施中!

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」
の行がマーカーにて指摘されますがどうすべきかわかりません。

マクロの実行前に、
対象範囲についてセルの保護や結合がないかを確認しましたが、
いずれもありませんでした。

解決法をご教示ください。
よろしくお願いします。

A 回答 (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
'=====================↑ ココマデ ↑=====================

ご参考まで。
「エクセル2003でマクロをおこないました」の回答画像3
    • good
    • 0
この回答へのお礼

なるほど!
データ量が大きすぎるセルが一部あり、
そこでうまく処理できず(制限を越えていたために)
詰まっていたのかもしれません。

いただいたコードに書き直したところ、問題なく作業が進みました。
ありがとうございました。

お礼日時:2009/07/07 14:22

>対象範囲についてセルの保護や結合がないかを確認しましたが、いずれもありませんでした。



「セルの保護がない」とはロックのチェックをはずしているという意味ではないですよね。
「シートの保護」をしていないとの意味ですよね。

「シートの保護」の時に「行の書式設定」にチェックしていないと行の高さは変えられないと思います。

この回答への補足

言葉足らずでした。

セルの保護についてはセルのプロパティからロックを外しました。
それとは別に、シートの保護については設定しておらず、したがって保護されていない状態です。

補足日時:2009/07/06 19:27
    • good
    • 0

MAXGYO = 300


IX = 1

この2つ、どういじりました?
また、外の行を修正したりはしてませんか?

多分、引数IXが想定範囲外になったためのエラーではないかと。

この回答への補足

ありがとうございました。

初めに先日の回答者様に書いていただいたものをコピペしたものを使いました。
そのとき、
MAXGYO=100
については私のデータの行数を入力せよとのご指示でしたので
MAXGYO=300
に書き換えました。

他の行に関しては修正はしておりません。
IX = 1
はこのままです。

一度はエラーも無く実行できたはず(・・・正常に完了したのは初めの1回だけだったので、エラーが連発されるうちにどうだったか自信がなくなってきました)なのですが・・・

補足日時:2009/07/06 16:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!