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

withステートメントでの記述省略についてですが、
with cells でcellsを省いていると同時に(つまりwithとend withの間で)、
例えばオートシェイプ(図形)など別のオブジェクトの記述を省略するにはそれを変数に格納するしかないのでしょうか。

また、定数として Shape型を宣言することはできないのでしょうか。

A 回答 (1件)

>with cells でcellsを省いていると同時に(つまりwithとend withの間で)


同時にということは考えたことがありませんね。

>定数として Shape型を宣言する
定数?意味がよく分かりませんね。オブジェクトは定数にはなりませんから、Class で、インスタンスを生成させるという意味ですか?それをやっても、作りは面倒だと思います。

>それを変数に格納するしかないのでしょうか。
それが一般的でしょうね。まあ、人によっては別の方法があるかもしれませんが、種を明かすと、それが意外に姑息な手段だったりします。

一般的なコードのSample 書いてみましょうか?

こういうものは、主に、標準モジュールで書かれます。それは、親オブジェクトが、Activesheetだからです。

'//
Sub test_AddShape()
Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
Dim aWidth As Double, aHight As Double
Dim aShp As Shape

 With Range("c2") '慣例で、1個の場合はCells プロパティにはしません。
 x1 = .Left
 y1 = .Top
 End With
 With Range("j5")
 x2 = .Offset(1, 1).Left
 y2 = .Offset(1, 1).Top
 End With
 aWidth = x2 - x1
 aHight = y2 - y1
 Set aShp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, x1, y1, aWidth, aHight)
 With aShp
  .DrawingObject.ShapeRange.Fill.Visible = msoFalse '塗りつぶしなし
  .DrawingObject.ShapeRange.Line.ForeColor.SchemeColor = 10 '色は赤
 End With
End Sub
'///
「Excel VBAのwith等での機記述」の回答画像1
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
変数で使われる型は定数の宣言時にも使えるのかなと思っていましたがそうではないのですね。

>それが一般的でしょうね。
無理に省略しようとしても一時しのぎの手ということになるのですね。アドバイスに従い、自分には変数に格納するという普遍的に通用する方法がよいと思えました。

>こういうものは、主に、標準モジュールで書かれます。それは、親オブジェクトが、Activesheetだからです。
丁寧にありがとうございます。確かに自分のレベルだとシートの方と間違えがちです。質問文からそこまで読み取るというのはさすがです。

サンプルにも細かく解説が加えられていてわかりやすかったです。未熟故に正直なところ、時折提示してもらったサンプルの理解に時間がかかったりするのですが、今回ご提示いただいたものは自分の理解の及ぶ範囲でした。
丁寧にご教授いただき感謝します。

お礼日時:2015/07/03 07:23

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