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

以下の2つは同じ意味だと思うのですが、test2はエラーになります。どうしてなのでしょうか?

Sub test1()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#).Select
Selection.Formula = "$A$1"
End Sub

Sub test2()
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#)
.Formula = "$A$1"
End With
End Sub

A 回答 (4件)

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#).DrawingObject.Formula = "$A$1"



って書いたらできたけど、だめかな?
    • good
    • 0
この回答へのお礼

ありがとうございます!!

ダメじゃないです。これでいいんです!
ありがとうございました。

お礼日時:2004/07/29 10:41

そうですね。

 taisuke555さんの方法で良いと思います。

ただ、他に色など設定するプロパティがあるのであれば、オブジェクト変数にセットした方が
いいかと思います。

Sub test1()
Dim Shp As Shape
Set Shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300, 100, 140, 80)
With Shp.DrawingObject
  .Formula = "$A$1"
  .Font.ColorIndex = 3
End With
End Sub

DrawingObjectは、隠しオブジェクトでヘルプには記載無く、メンバーにも出てこないと思います。

With Shp.DrawingObject の代わりに With Rectangles(Shp.Name) としてもいいと思います。

Rectangles も同じく隠しオブジェクトになっていますが・・・。
    • good
    • 0
この回答へのお礼

ありがとうございます。

こんな感じでできました。

Sub Macro5()
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#)
With .DrawingObject
.Formula = "$A$1"
.Font.Name = "Century Gothic"
.Font.FontStyle = "太字"
.Font.Size = 72
.Font.ColorIndex = 1
End With
.TextFrame.AutoSize = True
.Fill.Visible = msoFalse
.Line.Visible = msoTrue
.Name = "CD"
End With
End Sub

お礼日時:2004/07/29 10:43

出来ないような気がしますが、もし、画面が変化するのがイヤなだけであれば、



最初に Application.ScreenUpdating = False を入れて、Shapeの設定が終わったら
希望するセルをアクティブにしてから ScreenUpdating = True にする というのは
ダメなのでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実際にselectしたくないのです。

お礼日時:2004/07/29 10:40

Shapeオブジェクトに対して、その数式バーに "=$A$1" を設定するのに、


そのオブジェクトを 《Select》 していないから と思います。

後のコードですと、このコードを実行する前にアクディブであるセルが、そのまま維持
され、Shapeオブジェクトが、アクティブになることはありません。
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
オブジェクトを 《Select》 せずにその数式バーに "=$A$1" を設定することは出来ないのでしょうか?

お礼日時:2004/07/28 13:02

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