Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4123 / 13644 ツリー ←次へ | 前へ→

【58276】グループ内図形のText更新 電気鯰 08/10/15(水) 23:16 質問[未読]
【58284】Re:グループ内図形のText更新 Abebobo 08/10/16(木) 8:50 発言[未読]
【58288】Re:グループ内図形のText更新 Abebobo 08/10/16(木) 12:19 発言[未読]
【58300】Re:グループ内図形のText更新 電気鯰 08/10/16(木) 23:08 お礼[未読]
【58301】Re:グループ内図形のText更新 ichinose 08/10/17(金) 8:44 発言[未読]
【58326】Re:グループ内図形のText更新 電気鯰 08/10/18(土) 22:45 お礼[未読]

【58276】グループ内図形のText更新
質問  電気鯰  - 08/10/15(水) 23:16 -

引用なし
パスワード
   グループの図形を解除しないで、中のテキストをマクロで更新出来ないのでしょうか。手操作では可能ですが、マクロで実行する方法が分かりません。
ご教示いただけないでしょうか

【58284】Re:グループ内図形のText更新
発言  Abebobo  - 08/10/16(木) 8:50 -

引用なし
パスワード
   電気鯰 さん おはようございます。
つい最近、まったく同じことがしたくて四苦八苦しました。
で、 
コントロールツールボックス の ラベル(Aのアイコンのやつ)を代用しました。
グループ化もできます。

Sheet1.Label1.Caption = "これ"

上記のようにそのラベルが有るシートから指定してやってみてください。

【58288】Re:グループ内図形のText更新
発言  Abebobo  - 08/10/16(木) 12:19 -

引用なし
パスワード
   記事番号58275 の関連のJakaさんのレスをみて、目安箱のぞいたら、
オートシェイプのテキストボックスを選択しておいて、数式バーに
=$A$1
とでも入れとけば、グループ化の後でも反映できますね。

【58300】Re:グループ内図形のText更新
お礼  電気鯰  - 08/10/16(木) 23:08 -

引用なし
パスワード
   早速のご返答ありがとうございます。ご指摘の方法でうまくゆきます。
でもこれは自分が作成する図形についてですね。
当方の説明不足で申し訳ありません。今回更新したいのは他人が作成したものです。Picture,Rectagle,TextBoxなど多数の図形が単独若しくはGroupに含まれています。これらの図形の一括検索・更新するマクロを作成しました。これを単純にしたくて投稿した次第です。。
このマクロは二つあります。
Step1:Shapeのテキストを総てExcelSheeetに一覧形式で取得(マクロ前半)
Step2:変更したいテキストをExcelSheet上で複数カ所書き直す。(人)
Step3:変更カ所に対応する図形の中身を一括更新(マクロ後半)
のように使います。
Step1ではGroupを解除して単独図形にして、テキスト取得します。
Step3では更新したい図形は単独ですから
   Selection.Text="更新したい文字列"
が実行できます。その後Groupの分解の逆を辿って元のGroup編成を再現します。
このグループの分解、再編成がマクロを複雑にしており質問箱にメールしました。
よろしく願います。
Groupのままでテキスト取得するにはGroupItemsのメンバーをSelectすれば可能です。この時に更新する方法が知りたくてメールしました。
よろしく願います。

【58301】Re:グループ内図形のText更新
発言  ichinose  - 08/10/17(金) 8:44 -

引用なし
パスワード
   おはようございます。
こんな方法を取ると出来そうですが・・・、


Sub sample()
  Dim gshp As Shape
  With ActiveSheet.Shapes
    .AddShape(msoShapeIsoscelesTriangle, _
       10, 10, 100, 100).Name = "shpOne"
    .AddShape(msoShapeIsoscelesTriangle, _
       150, 10, 100, 100).Name = "shpTwo"
    .AddShape(msoShapeIsoscelesTriangle, _
       300, 10, 100, 100).Name = "shpThree"
    Set gshp = .Range(Array("shpOne", "shpTwo", "shpThree")).Group
    DoEvents
  End With
  MsgBox "グループ化 完了"
  gshp.GroupItems(1).Select
  SendKeys "ichinose"
  DoEvents
  ActiveCell.Select
End Sub


>Step1ではGroupを解除して単独図形にして、テキスト取得します。
>Step3では更新したい図形は単独ですから
>   Selection.Text="更新したい文字列"
>が実行できます。その後Groupの分解の逆を辿って元のGroup編成を再現します。
グループ解除を行えば、選択しなくても文字列の更新は出来ると思いますよ!!

でも、手法としては、↑これのほうがよさそうですけどね!!

コードは、参考程度にみてください

【58326】Re:グループ内図形のText更新
お礼  電気鯰  - 08/10/18(土) 22:45 -

引用なし
パスワード
   当方の実験でもうまく行きました。
早速貴ご推奨のすっきりした方式に組み替えます。
ありがとうございました。
    以上

4123 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free