- 締切済み
エクセル。マクロの記録で出来た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 といった形になるのでしょうが、どうもうまく出来ません。 ご教示いただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- freezemoon
- ベストアンサー率39% (13/33)
すいませんギブですm(_ _)m どうにもなりません。
- freezemoon
- ベストアンサー率39% (13/33)
こんばんは いろいろやってみたのですが、ExecuteExcel4Macro "FORMULA(""=R1C1"")" をシェイプにあてるには、セレクトしないとだめみたいですねぇ。 セレクトしたくない理由があるのでしょうか? できたら教えてください。
お礼
ありがとうございます。 セレクトしたくないのは、他にセレクトしてマクロを追加したいのでここではセレクトしないようにしようと思っただけなのですが。 試行錯誤の結果、下記のようにまとめられましたが、どうしてもセレクトが残ってしまいます。とほほ。 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)
ちょっと邪道かもしれませんが、最初に選択していたものを、最後に選択しなおす方法ではどうでしょうか? 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
お礼
さっそくありがとうございます。 思いつくことは同じようで、実はわたしも今は同じようなことで逃げているんです。(笑) ただ、いつまでもそうしてるのもなんですから、正しいやり方を知りたくて質問してみました。 ありがとうございました。
お礼
ありがとうございました。 なんとかこんな感じでできました。 よくわかりませんが、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