Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

エクセルVBAの構文。 どこが間違っているのでしょうか?

以下の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

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

  • ベストアンサー
回答No.3

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#).DrawingObject.Formula = "$A$1" って書いたらできたけど、だめかな?

otasukey
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

そうですね。 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 も同じく隠しオブジェクトになっていますが・・・。

otasukey
質問者

お礼

ありがとうございます。 こんな感じでできました。 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

すると、全ての回答が全文表示されます。
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

出来ないような気がしますが、もし、画面が変化するのがイヤなだけであれば、 最初に Application.ScreenUpdating = False を入れて、Shapeの設定が終わったら 希望するセルをアクティブにしてから ScreenUpdating = True にする というのは ダメなのでしょうか。

otasukey
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

Shapeオブジェクトに対して、その数式バーに "=$A$1" を設定するのに、 そのオブジェクトを 《Select》 していないから と思います。 後のコードですと、このコードを実行する前にアクディブであるセルが、そのまま維持 され、Shapeオブジェクトが、アクティブになることはありません。

otasukey
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A