色彩を教える人になるための講座「色彩講師養成講座」の魅力とは>>

どうも、お世話になっています。
VBA初心者です。

エクセルのワークシート上の
ActiveSheet.Shapes("Picture 1") を コピペするマクロを
作っているのですが
あらたにコピーされた図形の名前を設定できますか。
出来たオブジェクトを選択するマクロができなくて困っています。

ご教授願います。

gooドクター

A 回答 (2件)

バージョン幾つのエクセルを使っているのかによって,正しいマクロの書きぶりが変わる場合があります。


ご相談投稿時には,ご利用のソフト姪は元よりご利用のソフトのバージョンまでしっかり明記することを憶えてください。

>あらたにコピーされた図形の名前を設定できますか。

モチロンできます。
基本的なコツは,貼り付けた(新たな画像がシート上に発生した)直後にさっさと名前を付けてしまうことです。

作成例:
sub macro1()
 activesheet.shapes("Picture 1").copy
 range("A10").select
 activesheet.paste
 selection.name = "Pict2"
end sub



#但し書き:今回のご相談とは全く無関係の部分で
ご相談のようなヤリタイ事で,現実に大概問題になるのは「一体どんな名前にしたらイイ」のか,少なくともエラーが起きないマクロを書けるかという部分です。
もうちょっと作業を進めた後,必要に応じてまた別途ご相談を投稿してみてください。
    • good
    • 0
この回答へのお礼

すばやい回答有難う御座います。

<<直後にさっさと名前を付けてしまうことです。
なるほど、作った直後のセレクトされている内なら出来るということですね。
できるオブジェクトの名前を直接つけるのはできないんですね。
有難う御座います。

お礼日時:2011/10/22 13:17

私はShapeのRectangle 1でやったのですが


シートSheet1に図形の長方形を1つ作っておく。
標準モジュールに
Sub Macro4()
Worksheets("Sheet1").Shapes("Rectangle 1").Copy
'Selection.Copy
ActiveSheet.Paste
Selection.Name = "aaa"
End Sub
を実行する。
コピーして貼り付けた直後の段階で、その図形がSelectされているので、間髪を入れず(他の操作が入らない段階で、ただプログラム実行中は普通は入らない)Selectionを使って取り出し(=オブジェクトを掴んで)、名前をつけてしまう。
ーー
確認用に
標準モジュールに
Sub test01()
For i = 1 To Worksheets("Sheet1").DrawingObjects.Count
MsgBox Worksheets("Sheet1").DrawingObjects(i).Name
Next i
End Sub
を作って、前記の貼り付け実行後、こちらを実行すると、「指定した名前で、長方形が増えている」ことがわかると思う。
ーーー
この辺は私にとっては難しい(すっきりしない)点で、別のコードの書き方があるようにも思うが、今すぐは出てこない。
エクセル・バージョンによっても変わる恐れがあるように思う。
    • good
    • 0
この回答へのお礼

すばやい回答有難う御座います。
確認用も分かりやすく参考になりました。


<<間髪を入れずSelectionを使って取り出し名前をつけてしまう。

なるほど、No1さんと同様ですか。作っては消すということを繰り返すようなエクセルシートだと
コピーした瞬間にできるオブジェクト名の数字がどんどん膨れ上がりますね・・・

お礼日時:2011/10/22 13:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング