• ベストアンサー

エクセルVBAの図形について

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

質問1 ShapeRangeコレクションを作成して、そのコレクションにプロパティを設定しては。     『ShapeRange』でVisual Basic のHelpの     『ShapeRange コレクション オブジェクト』を参照してみてください。 質問2 質問3    下記にサンプルを書いてみました。        OnAction でShowNameを呼び出し、図形の名前、コネクタの始点、終点をシートに書き出しています。    最後にOnActionを定義した図形の名前をメッセージボックスに出しています。 Sheet1のコードウインドウに貼り付け(Sheet1に図形がある) ↓ Sub OnActionTest()   Shapes(1).OnAction = "ShowName" End Sub 標準モジュールに貼り付け ↓ Public Sub ShowName()   Dim sp As Shape '図形   Dim ct As Integer 'カウンタ   Dim connStart As Shape 'コネクタの始点が接続する図形   Dim connEnd As Shape 'コネクタの終点が接続する図形   On Error Resume Next   For Each sp In ActiveSheet.Shapes     ct = ct + 1     Range("A" & ct) = sp.Name     Set connStart = sp.ConnectorFormat.BeginConnectedShape '質問(3)始点     Range("B" & ct) = connStart.Name     Set connEnd = sp.ConnectorFormat.EndConnectedShape '質問(3)終点     Range("C" & ct) = connEnd.Name   Next   MsgBox ActiveSheet.Shapes(Application.Caller).Name '質問(2)OnAction が定義された図形 End Sub

tamo
質問者

お礼

質問1については、とりあえずNAMEプロパティでやります。ちょっと格好が悪いぐらいで支障はないですからね。 質問2については無茶苦茶勉強になりました。早速使わせてもらいます。ヘルプにはきちんと載っているんですが、なかなか見つけられないものですね。いやホント助かりました。 サンプルコードまでつけていただいて、ほんとうにありがとうございました。また何かあったら質問しますのでよろしくお願いします。 ところで『普通のサラリーマンです。』のnishi6さん、結構EXCELマニアですね。(誉め言葉ですよ) ではまた。

tamo
質問者

補足

質問1は私の説明不足です。 独自のプロパティを設定したいとは、VBAで用意されているものではなく、新しいプロパティを作成したいという意味です。(上記ヘルプにはShapeRange コレクション オブジェクトを使用して”既存”のプロパティを設定するというよう項目しかみあたりませんでした。私の読み違いでしたらお手数ですが例をあげてください) 質問3の答えはバッチリです。(僕もこの答えには自力でたどりつけました。ついでに、どこにつながっているかを知りたいときはBeginConnectionSiteなどを使かえばよいことも…)

関連するQ&A

  • エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。

    エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。座標の指定方法がいまひとつ分かりません。 マクロの記録で、座標数値の設定は分かるのですが、セルに対しての指定方法が分かりません。 図形をドラッグ指定したA1セルからC1セルまで直線を書きたいのです。セルへの始点終点の指定方法が有るのでしょうか。

  • エクセル:VBAでシート上のオートシェイプ以外の図形を消去したい。

    お世話になります。 ★VBAでシート上のオートシェイプ以外の図形を消去したいのです。 No.1902175で、エクセルシート上の図形の削除方法をいろいろ教えていただきました。今回は、そのときにはあてはまらなかった、「オートシェイプをのぞく図形をVBAで削除したい」のです。 補足:シートは毎月のある行事等の予定表です。オートシェイプにはマクロを登録しているため消したくありません。その他の図は季節の行事に関するクリップボード等の図で、担当者がシートから毎月手作業で削除していたものです 以上、よろしくお願いいたします。

  • セル範囲と図形を指定してVBAで削除するには?

    エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

  • VBAでこのような図形の移動はできますか?

    シート上にあるオートシェイプの図形を、コマンドボタンを押すと「○cm下へ△秒間かけて移動させる」とか「回転させる」というマクロはできますでしょうか? どなたか教えてくださいませんか?よろしくお願いします。

  • excel VBA オートシェイプのテキスト段落

    おはようございます。 【オートシェイプ内のテキスト行間を指定するプロパティ】 オートシェイプ内のテキスト行間を指定するプロパティはありますでしょうか? excel 2007で オートシェイプにテキストをいれた場合、 右クリックすると「段落」という項目がでてきて、 オートシェイプ内のテキストの行間を指定できたのですが、 オートシェイプ内のテキストの行間をVBAで指定することはできるのでしょか? (マクロを登録してもなにも記述されていないので、困っています。) 最終的にはアクティブブックの全シートのオートシェイプの行間を変更する VBAにしたいと思っています。 参考URL等あれば教えていただけませんでしょうか? よろしくお願いいたします。

  • エクセル2003の図形の規定値について

    エクセル2003を使っています。 図形を多用するのですが、プロパティの規定値が「セルに合わせて移動やサイズ変更をする」になっています。 これを、「セルに合わせて移動はするがサイズ変更はしない」を規定値にしたいのですが、方法はあるのでしょうか? 図形を右クリック→「オートシェイプの規定値に設定」をやっても反映されませんでした。 ご存知の方、よろしくお願いします。

  • Excel VBA コメントに関して

    Excel2003を使用しています。 VBAになるのかは定かではないのですが Excelの機能に「コメント」を付ける機能がありますよね セルに対してカーソルを合わすことで表示される黄色い枠のコメントのことをしるす。 これをオートシェイプやコマンドボタン等のオブジェクトに対してカーソルを合わせることに よってこのコマンドがなんなのかのコメントを付けたい場合Excelでできるのでしょうか? もし、できるとしたならばどのようにしたらいいのでしょうか? VBAを使いできるのか、もっと楽な方法があるのか 教えて頂きたいのです。 ご教授願えないでしょうか、宜しくお願いします(人>д<*ペコ謝) ※補足※ コマンドボタンやオートシェイプでテキストを入れてしまうとボタン自体が入れる文字数によって大きくなってしまうのでできるだけ小さいボタンを作り補足事項やヘルプとして使用したい。 コマンドボタンにはVBAプログラムを組むとして、オートシェイプならば、図形にマクロを登録するとして、カーソルを合わした時のみコメントを表示させたいということです。

  • ExcelでVBAを利用してオートシェイプ情報取得

    Excelのオートシェイプをテキストデータに変化するVBAを作成したいです ただし対象となるオートシェイプは複数のオートシェイプがグループ化された グループオブジェクトになっています それら特定のパターンを持つオートシェイプオブジェクトの一群があり 1つ1つには想定される名称が存在します 具体的な操作としては複数のオートシェイプオブジェクトを横に並べたイメージダイアグラムを 作成し、それらにそって対応するテキストを配置していきたいというものです このようなオートシェイプの情報をうまく拾う方法、テキストデータと紐づける方法はありませんでしょうか よろしくお願いいたします

  • Excelのマクロを使用してオートシェイプ図形の色を変えたいのです。

    Excelのマクロを使用してオートシェイプ図形の色を変えたいのです。 オートシェイプ図形を50個ならべて、マウスでクリックしてものは色が変わるようにしたいと思います。 マクロ記録をすると以下のようになりました。 Sub Macro1() ActiveSheet.Shapes("AutoShape 1").Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 45 Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid End Sub このプログラムを50個書くわけにはいかないのですが、プログラムで処理するのに問題点が2つ出てきました。 ・オートシェイプ図形の名前が"AutoShape 1"となっていますが、これを変更したいのですが、書式設定にはありませんでした。変更するにはどうすればよいのでしょう? ・クリックしたオートシェイプ図形がどれであるかを返す関数がないと、どの図形がクリックされたかわからないのですが、これを返す関数はあるのでしょうか? よろしくお願いします。

  • エクセルVBAの構文についての質問です

    ちょっと前から勉強しはじめた超超初心者なんですが、オブジェクトやプロパティといった概念がちょっと理解できないでくるしんでいます 1、 Sub 図形非表示() ActiveSheet.Shapes("図形").Visible=False End Sub これは本にのっていた例文でアクテブシートの「図形」という名前のオートシェイプを非表示にする文なのですが本には「Visible プロパティ」 「Shapes プロパティ オートシェイプを返します」とありますがこれはつまり「Shapesプロパティ自体がオブジェクトになっている」ということなのでしょうか?「Shapes プロパティ」とかいてあるのでただのプロパティなのではないか???とおもってしまうのですが・・・ 2、 1と同じ感じなのですが Sub ワークシートに色を設定()   Worksheets("メニュー").Cells.Interior.ColorIndex=11 End Sub もInteriorプロパティ自体がオブジェクトになっているのでしょうか?? だとしたら全てのプロパティもオブジェクトになれるのでしょうか? 是非どなたか教えてください、よろしくお願いします