• 締切済み

excel オートシェイブのコピーについて

ワークシート内にオートシェイブを使って、マクロのボタンを作りました。 同じボタンを複数個使うのでコピーしてマクロ登録しようとしたところ、 1)同じオートシェーブNoになる場合(AutoShape1_Click) と 2)違うオートシェイブNoになる場合(AutoShape1_ClickとAutoShape2_Click) がありました。 登録したマクロが、オートシェイブオブジェクトの置かれているセル行を使用しているため col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row 1)の場合は最初に置いたAutoShape1のセル行が返されてきます。 質問ですが、  イ) コピーをして、1)になる場合と、2)になる場合はどこが違うんでしょうか?  ロ) オートシェイブのプロパティを見る方法ってありますか?    コピーしたオートシェイブNoを確認したいのですが…

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>オートシェイブのプロパティを見る方法ってありますか?コピーしたオートシェイブNoを確認したいのですが 名前なら 編集状態でその図形を選択するとエクセルのそのシートの名前ボックスに「四角形 1]などの名前が出るのでは。 質問にエクセルのバージョンが書いてないが、必ず書くこと。 2007以後だとAutoShape1になるのかな。 ーー シート上の図形はコピーで増やしても、 マクロの登録は、標準モジュールに Sub test03() MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row End Sub を作っておいてそれぞれの図形の「マクロ登録」の時にTest03 を選ぶと、四角形 1のクリックでは16、四角形 2のクリックでは23、のようになったが。 ーー また マクロ登録済みの図形を、別の場所へコピー貼り付けしても、その図形の在る行を表示するようだが。 そうならないかな? ーー 操作のあたりの詳細を1歩1歩質問に説明しておくべきだと思う。

ryou4649
質問者

お礼

ありがとうございました。 解決いたしました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

デフォルトの図形の名前(図形を生成したときに自動で付いた名前)を後で変更した場合,1の挙動になります。 デフォルトの名前のままの場合,2になります。 図形の名前は,原則として図形を選んだときに名前ボックス(数式バーの左端,通常A1のように表示される箱)に表示されます。 また, sub macro1() msgbox application.caller end sub といったマクロを当該の図形に登録して表示させてみるようなこともできます。 #参考 sub macro2() dim s set s = selection stop end sub と言ったマクロを用意し,調べたい図形を選択した状態でこのマクロをVBE画面でステップ実行し,VBE画面の表示メニューから「ローカルウィンドウ」を出しておいてsのプロパティを詳しく調べるような事も可能です。ただしこちらの手段では,ローカライズされた名前(「四角形 2」など)とは異なるnameで表示されるので,ちょっと戸惑います。

ryou4649
質問者

お礼

ありがとうございました。 解決いたしました。

関連するQ&A

  • Excel マクロ オートシェイブのコピーについて

    列を自動的に表示したり、非表示にするマクロを組みました。 例えばA列にあるオートシェイブXを置いて、それに以下のマクロを登録します。 Sub 表示1() Dim col As Integer col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column Columns(col + 1).Hidden = False End Sub 次に、B列に別のオートシェイブYを置いて以下のマクロを登録します。 Sub 非表示() Dim col As Integer col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column Columns(col).Hidden = True End Sub これで、YをクリックするとB列が非表示になり、XをクリックするとB列を表示にすることができました。 ところが、このオートシェイブX、Yを別の列にコピーして使おうとすると、うまくいくときといかないときがあります。 例えば、オートシェイブXをG列にコピーしたとき、 ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column の値が、7になるときと、1のままのときがあります。 オートシェイブのコピーにおいて、そのままコピーされるとき(7になるとき)と、ちょうどショートカットのようなものになるとき(1になるとき)があるようです。 両者の違い(どのようなときに違いが出るのか)についてどなたか、お教えください。

  • Excelで合成オートシェーブにマクロ登録でエラー

    excelで、非表示列を表示にするのに、ボタンで行えるようにしました。 オートシェーブ画像を合成した図形をセル内に置き、そのボタンを押すとその隣の列が表示になるというものです。 col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column Columns(col + 1).Hidden = False これで、うまく動作していたのですが、突然動作しなくなってしまいました。 ボタンを押すと 「実行時エラー'-2147024809(80070057)' 指定した名前のアイテムが見つかりませんでした」 というエラーメッセーが出て、 col = ActiveSheet…の行で停止してしまいます。 原因と対策について教えていただけませんか? 思い当たることとしては、開発はExcel2003で行っているのですが、昨日Excel2007上で動作させました。(ちゃんと動きました。)その後、そのファイルをUSBメモリで持ち帰り、Excel2003で動かそうとしたら、上記の状態で動かなくなっていました。 それと、単独のオートシェーブにマクロを登録したときは、再度マクロ登録の画面に行くと マクロ名という覧に登録したマクロが表示されるのですが、 合成オートシェーブの場合、 「Group1295_Click」 と表示され、登録されているマクロ名が表示されないのですが、これは正常なのでしょうか?

  • Excel マクロ オートシェイブに登録したマクロ

    EXcel2003,2007,2010を使用しています。 オートシェイブに、マウスの右クリックで「マクロの登録」から登録したマクロを解除する方法を教えて下さい。

  • オートシェイブだけ削除したい場合、

    シートの上にオートシェイブとOLEオブジェクトの方のコマンドボタンがあり、 オートシェイブだけ削除したい場合、 どのようなvbaコードになるのでしょうか? Sub Sample() ActiveSheet.Shapes.Delete End Sub 上だと 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」 になります。

  • excel オートシェープでマクロエラー

    どうにも不思議な現象が発生して困っています。 どなたか原因と解決方法を教えてください。 ワークシートに挿入した図形にマクロを登録し、選んだ図形によって処理を変えます。 登録したマクロに row = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row を書いて、図形のある行を取得し、どの図形がクリックされたかを判断しています。 不思議なのはここからで、 【その1】  ずっと何年間も不具合無く動作していたのに急に「指定した名前のアイテムがみつかりませんでした。」というエラーが発生するようになりました。  しかも1回目に図形をクリックしたときは正常に動作するのに、続けて2回目をクリックするとこのエラーが出ます。 そして、デバッグでVB画面に移り、マクロを一度停止して再起動すると、また1回目は正常動作するのに2回目はエラーとなります。 【その2】 原因をさぐるためにrow = ActiveSheet.Shapes…の行の前にブレークポイントを設定してみたところ、ブレークポイントを置いて停止後に継続させると何回でも正常に動作します。 この現象自体が不明です。 どなたかよろしくお願いいたします。

  • 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"となっていますが、これを変更したいのですが、書式設定にはありませんでした。変更するにはどうすればよいのでしょう? ・クリックしたオートシェイプ図形がどれであるかを返す関数がないと、どの図形がクリックされたかわからないのですが、これを返す関数はあるのでしょうか? よろしくお願いします。

  • excelでオブジェクトの位置を知りたい

    ワーシート上にオートシェイブで描かれた図形が複数個あり、同じマクロに登録されている場合に、任意のオブジェクトがクリックされたとき(マクロが動いたとき)に、マクロ内でどのオブジェクトが選択されたかを知る方法がありますか? できれば、そのオブジェクト(の左上端)の置かれているセルの列数、行数が知りたいのですが。

  • Excel マクロでボタンを押してリンク先に行く

    前回はお世話になりました。 ボタンを押した時にボタンの裏のセルに隠れているURL先に行くマクロを作っています。 具体的には D列から最大F列までの13行から下(変動します)にボタンがあり、 それぞれ行きたいURLがボタンの裏に書かれています。 D13にあるボタンをクリックすると、その裏にあるURLに行くイメージです。 http://okwave.jp/qa/q210243.html を参考に、セルの位置を取得するまでは出来ました。 次に objIE.Navigate Range("○●")の要領で Sell Range("○●")を作りたいのですが、 ○●の表し方が間違っているためかURL先に行けません。 Dim tmp As Variant tmp = Split(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address, "$") Shell Range(tmp(1) & tmp(2)) としてみたり、色々試してみましたがダメでした。 他の方法でも構いませんのでご教授願います。

  • VBAでオートシェープのテキストを取得の際、ShapesとDrawingObjects?

    エクセル2003です。 オートシェープの基本図形の「額縁」に以下のマクロを登録しました。 マクロを呼び出したオートシェープに表示してあるテキストを取得しようとするものです。 Sub test() x = Application.Caller MsgBox ActiveSheet.Shapes(x).Characters.Text End Sub ところが実行時エラーとなってしまいます。 試行錯誤の結果、ShapesをDrawingObjectsに変えるとうまくいきます。 なぜでしょうか?

  • オートシェイブの線に影が出来る

    オートシェイブで クリックアンドドラッグで2角の線を描くと影が出来て三角形になってしまう場合があります。 一直線だと線の影がでます。 消す方法をおしえてください。 吹き出しも影がでます。 ps.プレビューでも印刷でもでます。

専門家に質問してみよう