• 締切済み

エクセル。マクロの記録で出来たVBAを書き直したい。

エクセル2000(OSはWindows2000)でマクロの記録を行いました。 四角形を出してA1セルにリンクさせフォント等の設定をしたものです。 Sub Macro5() ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#). _ Select ExecuteExcel4Macro "FORMULA(""=R1C1"")" With Selection.Font .Name = "Century Gothic" .FontStyle = "太字" .Size = 72 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse End Sub これを、実際には四角形をセレクトしないで実行させたいのです。 With ActiveSheet.Shapes.AddShape~ End With といった形になるのでしょうが、どうもうまく出来ません。 ご教示いただければ幸いです。

みんなの回答

回答No.3

すいませんギブですm(_ _)m どうにもなりません。

otasukey
質問者

お礼

ありがとうございました。 なんとかこんな感じでできました。 よくわかりませんが、DrawingObjectを使うんですね。 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

回答No.2

こんばんは いろいろやってみたのですが、ExecuteExcel4Macro "FORMULA(""=R1C1"")" をシェイプにあてるには、セレクトしないとだめみたいですねぇ。 セレクトしたくない理由があるのでしょうか? できたら教えてください。

otasukey
質問者

お礼

ありがとうございます。 セレクトしたくないのは、他にセレクトしてマクロを追加したいのでここではセレクトしないようにしようと思っただけなのですが。 試行錯誤の結果、下記のようにまとめられましたが、どうしてもセレクトが残ってしまいます。とほほ。 Sub Macro5() With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#) .Name = "CD" .Fill.Visible = msoFalse .Line.Visible = msoFalse .Select Selection.Formula = "$A$1" Selection.AutoSize = True Cells(1, 1).Select With .TextFrame.Characters.Font .Name = "Century Gothic" .FontStyle = "太字" .Size = 72 .ColorIndex = 1 End With End With End Sub ほかにやりようはないのでしょうか?

  • inte-nori
  • ベストアンサー率48% (33/68)
回答No.1

ちょっと邪道かもしれませんが、最初に選択していたものを、最後に選択しなおす方法ではどうでしょうか? Sub Macro5()   Set a = Selection   ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#). _   Select   ExecuteExcel4Macro "FORMULA(""=R1C1"")"   With Selection     .Font.Name = "Century Gothic"     .Font.FontStyle = "太字"     .Font.Size = 72     .ShapeRange.Fill.Visible = msoFalse     .ShapeRange.Line.Visible = msoFalse   End With   a.Select End Sub

otasukey
質問者

お礼

さっそくありがとうございます。 思いつくことは同じようで、実はわたしも今は同じようなことで逃げているんです。(笑) ただ、いつまでもそうしてるのもなんですから、正しいやり方を知りたくて質問してみました。 ありがとうございました。

関連するQ&A