※ ChatGPTを利用し、要約された質問です(原文:VBA2010で罫線を引くマクロがエラー停止する)
VBA2010で罫線を引くマクロがエラー停止する
エクセル2003で作成したマクロをエクセル2010で実行するとエラーで停止します。
解析を行ったのですが対応が分からず困っています。
是非対応方法を教えて頂き質問いたします。
状況:
Subマクロとして罫線を引くマクロを作成しました。
罫線を引くサブマクロは、問題ないと考えいます。
(エラーになるまでに何回か使っていますが問題なく実行されいます。)
このSubマクロがある特定の箇所にくるとエラーで停止しています。
エラーで停止したでマクロを一旦終了させて、選ばれた箇所で右クリック⇒”セルの書式設定”を試みましが時間を掛けて待っても罫線等の表示が出ません。
多分、この状態になっているのでエラー停止しいると考えられます。
試しにエラーになる箇所の前で右クリック⇒”セルの書式設定”を行うと罫線等の表示がされます。
よってこのマクロの実行すると”セルの書式設定”が出来なくなるようです。
下記に今回のマクロを記載します。
=======マクロ記載======
For 回数 = 1 To Gr数
開始行 = 2 + 4 * (回数 - 1)
Call 太罫線(開始行, 2, 開始行 + 3, 終了列)
Next 回数
Sub 太罫線(開始行, 開始列, 終了行, 終了列)
Range(Cells(開始行, 開始列), Cells(終了行, 終了列)).Select
Selection.Borders(xlEdgeLeft).Weight = xlThick
Selection.Borders(xlEdgeTop).Weight = xlThick
Selection.Borders(xlEdgeBottom).Weight = xlThick
Selection.Borders(xlEdgeRight).Weight = xlThick
End Sub
==============================================
再度エラーになる条件を記載します。
(1)回数=2のときにエラーで停止します。
(2)エラーで停止すると右クリック⇒”セルの書式設定”が出来なくなります。
(3)For分の前では、右クリック⇒”セルの書式設定”が出来ます。
(4)VBA2003では、問題なく動作していました。
お礼
MARU4812様 色々と相談に乗って頂きありがとうございました。 何とかマクロが正常終了するようになりました。 どうしてエラーになるかは私には、理解が出来ません。 (多分、MARU4812様の言われる通りデータに何か変なデータが盛り込まれているとのかもしれません) ■変更箇所: 変更: 罫線の引き方を変更。 以前は、省略していましたが”マクロの記憶”(リボンの表示⇒マクロ⇒マクロの記憶)で罫線を引くマクロの通りに変更しました。 (但し、2箇所注釈で実行しないと動作しない) ■変更したマクロ 変更前: Sub 太罫線2(開始行, 開始列, 終了行, 終了列) Range(Cells(開始行, 開始列), Cells(終了行, 終了列)).Select Selection.Border(xlEdgeLeft).Weight = xlThick Selection.Border(xlEdgeTop).Weight = xlThick Selection.Border(xlEdgeBottom).Weight = xlThick Selection.Border(xlEdgeRight).Weight = xlThick End Sub 変更後: Sub 太罫線2(開始行, 開始列, 終了行, 終了列) Range(Cells(開始行, 開始列), Cells(終了行, 終了列)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone ' Selection.Borders(xlDiagonalUp).LineStyle = xlNone ←何故かここをREM文にしないと動作しません。 With Selection.Borders(xlEdgeLeft) ' .LineStyle = xlContinuous ←何故かここをREM文にしないと動作しません。 .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With End Sub ■本当に何度もご指摘を頂きありがとうございました。