• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA2010で罫線を引くマクロがエラー停止する)

VBA2010で罫線を引くマクロがエラー停止する

このQ&Aのポイント
  • エクセル2003で作成したマクロをエクセル2010で実行するとエラーで停止します。
  • 対応方法を教えて頂き質問いたします。
  • エラーになる条件を記載します。回数=2のときにエラーで停止し、右クリック⇒”セルの書式設定”ができなくなります。VBA2003では問題なく動作していました。

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

> 確かに”XLS”のファイルを開けると”このブックには無効な名前が > 含まれています。無効な名前は#REF!に変更されました”と出ました > が、マクロを簡単に見る限りでは変な表記はないようです。 とはいえ、結果としてエラーが出ているのですから、都合が悪い設定を していると判断すべきでは? 先の回答で書いた通り、明確な"不具合"とは限りません。 プログラムの文法上問題なくとも、間単にエラーは作れるでしょう? 分かり易い例としては、シート名に使用できない文字を使っていたり、 シングルクォーテーションで囲む必要があるのにやらないだけでも できます。 エラーに再現性があって、 > マクロは、”xlsm”と”xls”両方実行させましたが同じエラーで停止しています。 このあたりを見ると、 > (1)会社の大型?コンピュータが出力した”CSV"ファイルをマクロで > 読み込んでデータの処理(表作成、グラフ自動作成)をするマクロです。 このマクロで設定している処理を疑うべきでしょう。 まず、CSV はマクロで読み込んでますか?Excel にお任せで開いてますか? CSV データをそのまま Excel で扱うと都合の悪いデータが存在しますが、 どのように対処していますか? > このブックには無効な名前が含まれています。無効な名前は#REF!に変更されました はどの時点で出ますか? CSV を Excel にお任せで開いていて、いきなりこのメッセージが出るのなら、 CSV データが悪いという判断になりますよね? CSV が Excel ファイルに変換されて、エラー無く読み込めた状態から、 罫線だけを引いたら成功しますか? 成功したら、「表作成、グラフ自動作成をするマクロ」で罫線を引く前までに 行なった処理に原因があるのでは?という予想になります。

Comarch18
質問者

お礼

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 ■本当に何度もご指摘を頂きありがとうございました。

その他の回答 (3)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

> 1.エラーメッセージ > 実行時エラー”11004” > Border クラスのWgightプロパティ確定できません エラー番号は、1004ではないですか? エラーメッセージは「確定」ではなく「設定」では無かったですか? エラーメッセージと番号は、それ自体をキーワードにして検索すれば 同様の事例が検索できるほど重要な情報です。句読点や全角半角にも 注意してもう一度確認して下さい。 Weight が Wgight なのは大目に見るとしても、こういった情報を 正確に伝えられない技術者を私は信用しておりません。 で、 エラーメッセージと状況から、書式設定しようとしているセルに 何らかの不都合(※不具合とは限らない)があるため、書式設定が できないということは確実でしょう。 >(浅はかな私の知識では、セルに何かの保護が掛けられて罫線が > 引かれないためにエラー停止したと考えました。) その見当は必要ですね。 > 但し、マクロ等のこのセルに保護を掛けてもいませんし、エラー > になる前では”罫線”の画面が出て来ました。 現実を見ましょう。Excel は信用できません。特に正常終了しな かった処理では、何が起こっていても不思議ではありません。 また、あなた自身もそれほど経験豊富とは思えない技術者です。 (コードに Selection を使っている時点で私なら「問題なく動作 している」とは言えなくなります。不安定なプログラムです。) 極論を言えば、マウスに肘が当たった拍子に保護を掛けていないと 言い切れますか?ましてや、それをこちらで判断できますか? このままでは役に立たない情報の説明が多いので、実際のプロパティ の値や具体的な確認プログラムの出力結果等を使って説明するように して下さい。 例えば、だめもとで Unprotect した結果を確認するとか。 その上で、 http://qanda.rakuten.ne.jp/qa6661291.html 該当セルの設定自体にエラーを含んでいるとか? うまく参照できない→設定できない とは考えられないでしょうか? Excel2003と比較されているようですが、ファイル自体はどう なんですか?ファイル形式は xlsm ですか?2003から変換を 掛けたものですか新規作成のブックですか?そのあたりで ファイルの内部データにゴミが残る可能性は無いですか? 対象のブックに、前任者や使用者が設定を加えた可能性は 無いのですか?あるならそれをどこまで把握してますか? 処理が失敗するセルを削除したら成功しますか? コピぺしたらそのセルでも処理が失敗するようになりますか?

Comarch18
質問者

お礼

MARU4812様回答ありがとうございます。 エラーメッセージ: MARU4812様の言われると通り1004です。 下記にエラーメッセージを記載致します。 1004 Boder クラスのWeight プロパティを設定できません マクロは、”xlsm”と”xls”両方実行させましたが同じエラーで停止しています。 確かに”XLS”のファイルを開けると”このブックには無効な名前が含まれています。無効な名前は#REF!に変更されました”と出ましたが、マクロを簡単に見る限りでは変な表記はないようです。 マクロのデータについて: (1)会社の大型?コンピュータが出力した”CSV"ファイルをマクロで読み込んでデータの処理(表作成、グラフ自動作成)をするマクロです。 人間がデータファイルを開けて作業することはありません。 (2)大型コンピュータへの入力もマウスでクリックして入力するだけなので決められた以外のデータが入ることはありません。 マクロ作業者について: マクロの実行者は、マクロのオペレーションは出来ますがマクロについては殆ど知りません。 (マクロのエディターすら知りません。よって作業者がマクロを変更することは出来ません) エラーしてから強制的に実行した場合: (1)エラー時にエラーの出たセルを行削除して実行しましたが、同じ箇所でエラーが出ました。 ⇒データを見ましたが、(以前に書いたように) (2)Subマクロ(罫線を引くマクロ)を削除して実行しましたが、他のマクロでエラーが出ました。  マクロは、違いますがデータは、同じでした。 その他: 駄目もとで”保護”を外すマクロを追加しましたが駄目でした。 再度データを落として実行してみます。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

エラー原因と言いながら、エラーメッセージ書いてない ように見えるんだけど?

Comarch18
質問者

お礼

MARU4812様回答ありがとうございます。 MARU4812のご指摘通りエラーメッセージ等の情報の記載がなく分かりにくい文章になっていました。再度補足にエラーメッセージ等の情報を記載いたしましたのでご協力をお願い致します。

Comarch18
質問者

補足

MARU4812様、imogasi様回答ありがとうございます。 説明不足で申し訳ありません再度状況について書かせていただきますのでご協力をお願い致します。 1.エラーメッセージ 実行時エラー”11004” Border クラスのWgightプロパティ確定できません 2.マクロの停止位置及び各パラメータの値 1)マクロ停止位置 上記のエラーが出たときに”デバック”を押すと下記の箇所でエラーになって停止しています。 Sub 太罫線(開始行, 開始列, 終了行, 終了列) Range(Cells(開始行, 開始列), Cells(終了行, 終了列)).Select Selection.Borders(xlEdgeLeft).Weight = xlThick   ← この箇所でマクロは停止しています。 各パラメータの値を確認すると下記の様な値になっていました。 開始行:6 開始列:2 終了行:9 終了列:10 Subマクロについては、他でも使用しています。(メインのFor分で1回目で正しく動作しているので記載間違いは考えにくいです) 3.確認した事 上記のマクロは、決められた範囲のセルに太線の罫線を引くマクロです。 このマクロと同じことをエクセル上と行うには、”右クリック” ⇒ ”セルの書式設定”⇒"罫線”と同じことにを行うマクロです。 エラーになる箇所で”右クリック”⇒”セルの書式設定”を行いましたが”罫線”等の表示画面が出て来ません。 (浅はかな私の知識では、セルに何かの保護が掛けられて罫線が引かれないためにエラー停止したと考えました。) 但し、マクロ等のこのセルに保護を掛けてもいませんし、エラーになる前では”罫線”の画面が出て来ました。 以上が私が行った解析です。 拙い説明で申し訳ありませんがご協力をお願い致します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

エラー原因という微妙なことを質問していながら、質問のコードを実行したら動かないようなのは書かないこと。 もれている部分があるだろう。 ちゃんと記述内容を内容をみて、書いて質問のこと。 Gr数 = 2 終了列 = 5 の2変数を補ったら、内容はともかく、一応動くことは動いた。 質問するなら、前の段階で変数の値を決める部分のコードも、省略しないこと。 それと何がしたいか、文章で説明しておくこと。 コードは誤っていなくてもデータによってはエラーが出ることもある。(今回は罫線の問題らしくそれはなさそうだが) データもかいておくことが必要な場合もおおい。 4行ごとに外枠罫線を引きたいらしいが、外の内容は。列数とか。 ーー Sub test01() Gr数 = 2 For 回数 = 1 To Gr数 開始行 = 2 + 4 * (回数 - 1) MsgBox 開始行 終了列 = 5 Call 太罫線(開始行, 2, 開始行 + 3, 終了列) Next 回数 End Sub 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

Comarch18
質問者

お礼

imogasi様回答ありがとうございます。 ご指摘の通りエラーメッセージも無く分かりにくい説明で申し訳ありません。 No.2のMARU4812様の補足にエラーメッセージ等の記載いたしましたのでご協力をお願い致します。