アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2000です。
下記は自動記録で出来たマクロです。しかしこれが「実行時エラー1004:指定された値は境界を超えています。」となるんです。

Sub Macro2()
ActiveSheet.Shapes.AddShape(msoShapeSun, 152.25, 67.5, 137.25, 125.25).Select
Selection.ShapeRange.Adjustments.Item(1) = 0.3661
Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD5
End Sub

新しいブックをつくり、標準モジュールにコピーペーストで転記すればちゃんと作動するのですが、記録した元のブックではエラーになります。

デバッグを選択して、標準モジュールを開き、msoShapeSunのところにカーソルをあてると、「msoShapeSun=Empty 値」と出ました。
msoThreeD5も「msoThreeD5=Empty 値」と出ました。これが原因だと思いますが、どうしてこうなるのでしょう?
どうかお教えください。

A 回答 (2件)

これって再現性(新しいブックで自動記録→実行→エラー)ありますか?


同じように記録してみたのですが(↓)ちゃんと動きました。

Sub Macro4()
ActiveSheet.Shapes.AddShape(msoShapeSun, 44.25, 36#, 153#, 147.75).Select
Selection.ShapeRange.Adjustments.Item(1) = 0.3137
Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD5
End Sub

この回答への補足

はい、わたしも新しいブックでやれば正常に動くのです。
ただ、特定のブックでやるとエラーが出るのです。
その特定のブックがひとつやふたつならそのブックがおかしくなったのだろうで済ますのですが、今までためしたところ5つのブックでエラーになります。
5つのブックで共通しているのはかなりVBAを多用していることです。だからVBA同士の不都合があるのかとも考えましたが、エラーが発生するブックのVBAを新しいブックにコピーして、この問題のVBAと共存させても正常に動きました。

補足日時:2004/05/28 00:09
    • good
    • 0

Option Explicitは宣言していますか?


ツール~参照設定でMicrosoft Office 9.0 Object Library(MSO9.DLL)にチェックはついていますか?

msoShapeSunはMicrosoft Office 9.0 Object Library(MSO9.DLL)で定義されていますが、以下のように自分で宣言するとそちらの方が優先されますので、値が代入されるまではEmpty値になってしまいます。
Sub test()
Dim a, msoShapeSun
a = msoShapeSun
End Sub
宣言文が無くても、MSO9.DLLに参照設定が無くOption Explicitも無い場合はエラーにならず、上記と同様のことになります。
そのあたり確認してみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

Option Explicitは宣言していません。
というか、この宣言の仕方がよくわかりません。
よく標準モジュールの一番上に書いてあるのは見かけるのですが、ぜんぜんわかっていません。

エラーがでるブックをみたら、msoShapeSunはMicrosoft Office 9.0 Object Libraryがチェックになっていませんでした。これが原因なんですね?チェックを入れたところ動きました。まだ全部は試していませんが。

お礼日時:2004/05/28 14:30

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