- ベストアンサー
エクセルVBAのWith~End With構文
Win2000エクセル2000です。 下記のMacro11はTEST11のようにWith~End Withでくくれると思うのですがエラーになります。 どこがおかしいのでしょうか? Sub Macro11() ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.ForeColor.SchemeColor = 64 Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10 Selection.ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 Selection.ShapeRange.Adjustments.Item(1) = 0.3016 Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD7 Selection.ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal Selection.ShapeRange.ThreeD.Depth = 144# End Sub Sub TEST11() With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120) .ShapeRange.Line.Weight = 0.75 .ShapeRange.Line.ForeColor.SchemeColor = 64 .ShapeRange.Fill.ForeColor.SchemeColor = 10 .ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 .ShapeRange.Adjustments.Item(1) = 0.3016 .ShapeRange.ThreeD.SetThreeDFormat msoThreeD7 .ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal .ShapeRange.ThreeD.Depth = 144# End With End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 >出来ればSelectしないでShapeRangeの属性を一括変更したいのですが・・・。 Selectしないならこうです。 Sub TEST12() With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120) .Line.Weight = 0.75 .Line.ForeColor.SchemeColor = 64 .Fill.ForeColor.SchemeColor = 10 .Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 .Adjustments.Item(1) = 0.3016 .ThreeD.SetThreeDFormat msoThreeD7 .ThreeD.PresetMaterial = msoMaterialMetal .ThreeD.Depth = 144# End With End Sub
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
くくれません。 くくるんだったらこうです。 Sub TEST11() ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select With Selection.ShapeRange .Line.Weight = 0.75 .Line.ForeColor.SchemeColor = 64 .Fill.ForeColor.SchemeColor = 10 .Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 .Adjustments.Item(1) = 0.3016 .ThreeD.SetThreeDFormat msoThreeD7 .ThreeD.PresetMaterial = msoMaterialMetal .ThreeD.Depth = 144# End With End Sub
お礼
ありがとうございました。 くくれました。 でも、どうしてもSelectしなければいけませんか? 出来ればSelectしないでShapeRangeの属性を一括変更したいのですが・・・。 よろしくお願いします。
- neKo_deux
- ベストアンサー率44% (5541/12319)
Withは、 With object [statements] End With と、objectを指定してくださいという事になっています。 > With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120) AddShapeはオートシェイプを追加するメソッドです。 -- Sub Macro11() ' オートシェイプを追加して選択 ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select ' 選択されたSelectionのShapeRangeの属性を一括変更 With Selection.ShapeRange .Line.Weight = 0.75 ・ ・ .ThreeD.Depth = 144# End With End Sub では?確認していませんが…
お礼
ありがとうございました。 くくれました。 でも、どうしてもSelectしなければいけませんか? 出来ればSelectしないでShapeRangeの属性を一括変更したいのですが・・・。 よろしくお願いします。
お礼
ありがとうございます! 思ったように出来ました。 わたしが最初に書いたものでは「ShapeRange」が余分だったのですね。 どうしてかわかりませんが助かりました。 ありがとうございました。