10代と話して驚いたこと

マクロの動作確認をしているのですが、Excel2003では動いていたマクロがExcel2007では動かず、エラーが出てしまいます。

一週間程前からvbaはvbに似ているということで、vbの参考書片手にマクロを動かしている、マクロ作成初心者です。

マクロの動作確認をしているのですが、
Excel2003で動いていたマクロがExcel2007ではエラーが出てしまいます。

まず初めに、Excel2007では
LineWeight = .Line.Weight / 0.75
という部分にエラーが出て(エラー番号は6で、調べてみるとオーバーフーローとのことです)
.Line.Weightに-2.147484E+0.9という値が入っています。
Excel2003では.Line.Weightに0.75とか1または2という値が入っていました。
(どちらもWith~End With間に書かれています。)

そこでお聞きしたいのですが、.Line.Weightというのはオブジェクトから線幅の値を取得する関数なのでしょうか?
それともどこかで値を設定しているのでしょうか?-2.147484E+0.9という値を設定しているとは考えにくいもので…

2003と2007の互換性についても調べたのですが、2007でも2003のマクロは動作するとの旨が多く、
ハッキリどこがダメとも書いてないので分からずとても困っております。

乱文で申し訳ないです。どなたかお教え下さい。

A 回答 (3件)

toshiredさん 今晩は!


>2003と2007の互換性についても調べたのですが、2007でも2003のマク
>ロは動作するとの旨が多くハッキリどこがダメとも書いてないので分
>からずとても困っております。
殆どのマクロは動作する様です。(参考に為れば下記サイトを参照)
■新しいVBAは何が変わったのか?(第6回)エクセル上級↓
http://pc.nikkeibp.co.jp/article/NPC/20060727/24 …
内容:旧バージョンで作成したマクロは、基本的には正常に動作する。しかし、エラーにこそならないが、そのままでは使い物にならないマクロも存在する。それは、Excel 2007の新機能に伴う問題だ。
VBAの基本仕様は変わっていない→まず認識しておくべきは「VBAの基本仕様は変わっていない」ということだ。Long型の許容範囲が広がったとか、新しくコントロール配列が使えるようになったなど、VBAの言語仕様に変更はない。今までに作成したマクロが文法的な問題でエラーになることはないだろう。また、Excelのオブジェクト構造や、Excelオブジェクトが持つ仕様に「変更」もない。セルをコピーするマクロは相変わらず「Range("A1").Copy Range("B1")」と同じようにCopyメソッドが使える。このCopyメソッドに新しい引数などは増えていない。こうしたVBAの仕様は、VBE上の「オブジェクトブラザ」で確認できる。
>ハッキリどこがダメとも書いてないので分からずとても困っておりま
>す。
多くの人が作成しているマクロについて此処が駄目とは誰も言え無いのではないでしょうか?
    • good
    • 0

LineWeight = .Line.Weight / 0.75


のLineWeight (ピリオドなし)
はミス入力ですか
ーーー
エクセルのシートの罫線の太さは
Borders.Weight=XlThick
.Line.Weight はShapeの線の太さのようです。
だから2.147484E+0.9という値はおかしいわけで、なぜそのような値が
入ったのを調べるのが、追求方向です。
.Line.Weight = xlThin というのも可能のようです。
>、.Line.Weightというのはオブジェクトから線幅の値を取得する関数な・・
SHAPEの線の太さを取得・設定するプロパティと思われる。
関数はこんな描き方をしない。
>vbaはvbに似ているということで、vbの参考書片手にマクロを
そういう考えは大反対。勉強の上では、VBとは別物と思ったほうがよい。扱うオブジェクトが違う。
    • good
    • 0

「マクロのセキュリティレベルについて 」をご覧ください。



参考URL:http://www.ap-system.net/macro.htm
    • good
    • 0

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


おすすめ情報