過去ログ

                                Page     201
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼DrawingObjects  つん 02/10/14(月) 14:09
   ┗Re:DrawingObjects  JuJu 02/10/14(月) 22:51
      ┗Re:DrawingObjects  つん 02/10/14(月) 23:45

 ───────────────────────────────────────
 ■題名 : DrawingObjects
 ■名前 : つん <honey@sweetparty.ne.jp>
 ■日付 : 02/10/14(月) 14:09
 -------------------------------------------------------------------------
   こんにちは〜
10月とも思えない陽気がですね。暖かすぎて眠い〜

さて、久々に質問させていただきます。
今、ちょっくら他人の書いたコードを読んでいるのですが、
そのなかに、

For Each AAA In Workhseets("Sheet1").DrawingObjects
 処理処理
Next AAA

というのがありました。
DrawingObjectsって何じゃい?と思ってヘルプで見たのですが、
「隠しオブジェクト」とありました。そして、

新機能:新しい図形の描画レイヤ
のところに、DrawingObjectsがリストされておりました。

そこからまた、「新しい図形の描画レイヤ」の、「図形」にリンクがありましたので、それを開くと、「図形で作業する (描画オブジェクト)」に飛んだわけですが、そこによると・・・

「図形、または描画オブジェクトは、3 つの異なるオブジェクト、Shapes コレクション、ShapeRange コレクション、および Shape オブジェクトで表されます。通常、図形を作成したり、シートのすべての図形を反復する場合は、Shapes コレクションを使用します。単一の図形を書式設定したり、修正する場合は、Shape オブジェクトを使用します。複数の図形を画面上で処理するのと同じ方法で複数の図形を修正する場合は、ShapeRange コレクションを使用します。」

ということ・・・読んでもイマイチピンとこないんですけど、要するに、ShepesコレクションでOK・・・つまり

For Each AAA In Workhseets("Sheet1").Shapes
 処理処理
Next AAA

と書き換えて問題ない・・・ということなのでしょうか?

処理内容も一緒にアップするべきかもしれませんが、なにぶん自分で書いたコードではないので、無断でアップするわけにもいきません。
これだけの情報内でわかることだけで結構ですので、ご教授いただけたら幸いです。
よろしくお願いしますーm(__)m
 ───────────────────────────────────────  ■題名 : Re:DrawingObjects  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/10/14(月) 22:51  -------------------------------------------------------------------------
   つんさん、こんにちはぁ

>ということ・・・読んでもイマイチピンとこないんですけど、要するに、ShepesコレクションでOK・・・つまり
>For Each AAA In Workhseets("Sheet1").Shapes
> 処理処理
>Next AAA
>と書き換えて問題ない・・・ということなのでしょうか?

ではありません。

Excelでは、シート上のオブジェクトはShapesから参照することができますが、
DrawingObjectsとは参照するものが違います。
(ShapesはShape、DrawingObjectsはDrawingObjectを参照します)

ShapeオブジェクトからはDrawingObjectオブジェクトを参照するときは
Shape.DrawingObject のようにします。

たとえば、
 For Each AAA In Worksheets("Sheet1").DrawingObjects
   With AAA
     処理
   Wnd With
 Next AAA
は、
 For Each AAA In Worksheets("Sheet1").Shapes
   With AAA.DrawingObject
     処理
   Wnd With
 Next AAA
で同じ動きになります。
(条件によっては違うことがあります)

逆は、DrawingObject.ShapeRange(1)
(これも条件によっては違うことがあります)

参照するものが違うので、目的によって使い分ける必要があります。
なので、その元のコードが何をしたかったかによりますよ。

Shapeを参照したいときは、Shapes
DrawingObjectを参照したいときは、DrawingObjects
OLEObjectを参照したいときは、OLEObjects(おまけ^^;)
というように使い分けをします。

続きの処理がわからないので、とりあえずこのぐらいで^^A

ではではぁ
 ───────────────────────────────────────  ■題名 : Re:DrawingObjects  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/10/14(月) 23:45  -------------------------------------------------------------------------
   JuJuさん、こんばんは
回答ありがとうございます。

すっかりわかりました♪・・・とは言えないのですが(とほほ・・)
自分が考えていたのは間違いだというのはよーくわかりました。


>Excelでは、シート上のオブジェクトはShapesから参照することができますが、
>DrawingObjectsとは参照するものが違います。
>(ShapesはShape、DrawingObjectsはDrawingObjectを参照します)

いまいち、DrawingObjectってのが何を指すのかよーわからんのです(>_<)

>続きの処理がわからないので、とりあえずこのぐらいで^^A

そうですね・・・まるまる見ていただけたら、一番いいのですが・・・
なにぶん、自分のコードでないので、それが残念(>_<)

ではでは、ありがとうざいました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 201