[[20081127140304]] 『オートシェイプをマクロで』(CHISA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートシェイプをマクロで』(CHISA)

 最近、オートシェイプの質問ばかりしつこくてゴメンナサイ↓

 オートシェイプの位置をユーザーフォームに表示させたくて、
 Sheet1のモジュールにコードを作りました。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 With UserForm1
   .Show (0)
   .TextBox1 = ActiveSheet.Shapes("Rectangle 1").Top
   .TextBox2 = ActiveSheet.Shapes("Rectangle 1").Left
   .TextBox3 = ActiveSheet.Shapes("Rectangle 1").Width

   End With
 End Sub

 だけどこのコードだと、ワークシートを触らないと値が更新されません。
 (当たり前ですが・・・)

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) の
 Worksheetの部分を Shapes に変えて、

 Private Sub Shapes_SelectionChange(ByVal Target As Range)にしてみたんですけど
 やっぱりダメだったみたいで・・・

 ワークシートじゃなくて、オートシェイプを動かしたときに
 ユーザーフォームが表示されて、値も表示・更新させるにはどうしたらいいですか?

 どなたか教えてくださいm(__)m
 (CHISA)

 >Private Sub Shapes_SelectionChange(ByVal Target As Range)にしてみたんですけど
 >やっぱりダメだったみたいで・・・

 Shapeオブジェクトに公開されているイベントはありませんので、↑こういう記述が意味を持ちません。
 いや、仮にイベントがあったとしても文法的にも間違っているかな??

 これを実現するには、作成したオートシェイプに以下のマクロを登録しなければなりません。

 新規ブックにて、以下の手順で操作してください。

 1 サンプル オートシェイプの作成

 まず、適当なシートに問題のオ−トシェイプを作成してください。
 (図形は、オートシェイプであれば何でもかまいません)

 2 ユーザーフォームの作成

 次にVBEにて、CHISAさんのおっしゃるユーザーフォームを作成します。

 ユーザーフォーム名  UserForm1

 コントロールはテキストボックスを3つ用意します。

 TextBox1、TextBox2、TextBox3

 3 VBAコードの作成

 標準モジュールに以下のコードをコピーしてください。

 '===================================================================
 Sub sample()
    Dim shp As Shape
    If TypeName(Application.Caller) = "String" Then
       Set shp = ActiveSheet.Shapes(Application.Caller)
       With UserForm1
          .Show vbModeless
          .TextBox1.Text = shp.Top
          .TextBox2.Text = shp.Left
          .TextBox3.Text = shp.Width
          End With
       shp.Select
       Set shp = Nothing
       End If
 End Sub

 5 オートシェイプにマクロを登録

 「1」で作成したオートシェイプを選択してください。

 選択した状態で 「右クリック」---「マクロの登録」とクリックしてください。

 「マクロの登録」ダイアログが表示されます。

 マクロ名一覧に「3」の「sample」が表示されているはずでから、
 選択してOKボタンをクリックしてください。

 これで準備完了です。

 対象となる図形を選択してください。ユーザーフォームが表示され、位置と幅が表示されます。

 と、こんな操作を行えば実現できます。

 これを本来の仕様にどのように組み込めばよいか? は、全体像が見えていない私には、わかりませんが、
 それは、質問者さんが検討してみてください。

 ichinose@sampleコード訂正.7:55

 ichinoseさんありがとうございます。
 マクロの登録を忘れちゃってました。

 しかも、どのオートシェイプでも選択できてすごいです!

 ありがとうございましたm(__)m
 (CHISA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.