アプリ版:「スタンプのみでお礼する」機能のリリースについて

丸1日以上悩みましたが、解決できないのでご相談させていただきます。

Excel2007です。
複数のワードアートを作成しています。
個々を判別できるよう以下のように名前ボックスで名前をつけています。
内容は、数式バーを「 =商品データ!D2 」として別の入力用シートの値をそれぞれ表示させています。

商品名001
値段001
コメント001

これを、VBAで同一シートの別場所へコピーしたところ、商品名001のワードアートが2つという状態になってしまい、思うように処理ができません。
(数式バーの書き換えもまだ、考えていませんが・・・)
(対象データの数だけループさせたいと考えています)

==== コピー元の 価格001 が 価格002 になった。2つ目は変化なし ===
ActiveSheet.Shapes("価格001").Name = "価格002"

コピー完了後は、名前を変更したいワードアートがアクティブなのだと思うのですが、アクティブなワードアートの名前を変更するには、どうすればよいのでしょうか?

参考までに、以下のようなことをしています。
===
ActiveSheet.Shapes("価格001").Select 'コピー元を選択
Selection.Copy 'コピー
Range("Z13").Select '貼り付け先指定(横へ移動)
ActiveSheet.Paste '貼り付け

A 回答 (3件)

選択状態になっていますから


Selection.Name = "商品名002"
あるいは、インデックス番号で
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "商品名002"
というように出来ます。

Selectしない構文です。
ActiveSheet.Shapes("価格001").Copy
ActiveSheet.Paste
With ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
.Name = "商品名002"
.left = Range("Z13").left
.Top = Range("Z13").Top
End With
ただ、上記でも貼り付けられたワードアートは選択状態になります。
名前も、番号の部分をカウントアップする工夫が必要になると思います。

以下、余計なお節介ですが
Copyではなく、Duplicateを使ってみてください。
ワードアートも選択状態にすることなく、処理可能です。
構文も、もっと簡単になります。

この回答への補足

回答ありがとうございます。
Duplicateは、少し調べてみます。

あとは、内容のリンク先?の変更だけです。

Selection.Text = "=商品データ!D3"

とすると、しっかりと "=商品データ!D3"と表示されました。
数式バー部分の変更は、どうやるのでしょう…

補足日時:2010/03/08 12:54
    • good
    • 0

Formulaプロパティを使えば設定できます。

    • good
    • 0
この回答へのお礼

あっさりと…
ありがとうございます!

助かりました!

お礼日時:2010/03/08 13:35

一例です



ActiveSheet.Shapes("価格001").Select 'コピー元を選択
Selection.Copy 'コピー
Range("Z13").Select '貼り付け先指定(横へ移動)
ActiveSheet.Paste '貼り付け

Selection.Name=Selection.Name & "コピー"

ペーストしたShapeがセレクトのうちに
コピー元の名前の後に「コピー」という文字を足します。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
ActiveSheet.Shapes("価格001").Select
Selection.Copy
Range("Z13").Select
ActiveSheet.Paste
Selection.Name = "価格002"
で、コピー先の名前が変更できました。

お礼日時:2010/03/08 12:53

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