お世話になります。
マクロで3個の横書きテキストボックス(図形)をコピーして
Sheet2に貼り付けたいと思っております。
とりあえず1個だけの時のコードは自力で作成できました。
※Test1です
3個になった場合でもTest1の動作を3回繰り返して
Test2のようにすれば出来ますが、、、。
コードを見て頂ければわかりますがSheet1とSheet2を2回も往復するのは
能率が悪く、もっと良い方法があるように思います。
すいませんが詳しい方、説明の上手な方、直接、コードで説明できる方、
もっとシンプルで能率の良い方法があれば教えて下さい。よろしくお願いします
---------------------------------
Sub Test1()
'シート2の表示と1個の図形のコピペ()
ActiveSheet.Shapes.Range("テスト1").Select
Selection.Copy
'Sheet2をアクティブ
Sheets("Sheet2").Select
'Sheet2の図形を削除
図形 = Shape
For Each 図形 In ActiveSheet.Shapes
図形.Delete
Next 図形
'Sheet2に貼り付け
Range("B10").Select
ActiveSheet.Paste
'図形の選択解除
Range("A1").Select
End Sub
---------------------------------
Sub Test2()
'シート2の表示と3個の図形のコピペ()
ActiveSheet.Shapes.Range("テスト1").Select
Selection.Copy
'Sheet2をアクティブ
Sheets("Sheet2").Select
'Sheet2の図形を削除
図形 = Shape
For Each 図形 In ActiveSheet.Shapes
図形.Delete
Next 図形
'Sheet2に貼り付け
Range("B10").Select
ActiveSheet.Paste
'----------
'Sheet1をアクティブ
Sheets("Sheet1").Select
ActiveSheet.Shapes.Range("テスト2").Select
Selection.Copy
'Sheet2をアクティブ
Sheets("Sheet2").Select
'Sheet2に貼り付け
Range("B15").Select
ActiveSheet.Paste
'----------
'Sheet1をアクティブ
Sheets("Sheet1").Select
ActiveSheet.Shapes.Range("テスト3").Select
Selection.Copy
'Sheet2をアクティブ
Sheets("Sheet2").Select
'Sheet2に貼り付け
Range("B20").Select
ActiveSheet.Paste
'図形の選択解除
Range("A1").Select
End Sub
No.2ベストアンサー
- 回答日時:
一応作成してみました。
汎用性を持たせるためにデータ部(場所を指定してコピー)と、処理部(図コピー)を分けてあります。
---------------------------------------------------------------------
Sub 場所を指定してコピー()
Call 図コピー("テスト1", "B10")
Call 図コピー("テスト2", "B15")
Call 図コピー("テスト3", "B20")
End Sub
---------------------------------------------------------------------
Sub 図コピー(図名 As String, 貼付位置 As String)
Dim 図番号 As Long
Const 元シート名 As String = "Sheet1"
Const 先シート名 As String = "Sheet2"
Sheets(元シート名).Select
ActiveSheet.Shapes.Range(図名).Select
Selection.Copy
Sheets(先シート名).Select
For 図番号 = 1 To ActiveSheet.Shapes.Count
If ActiveSheet.Shapes(図番号).Name = 図名 Then
ActiveSheet.Shapes(図名).Delete
Exit For
End If
Next
Range(貼付位置).Select
ActiveSheet.Paste
Range("A1").Select
End Sub
---------------------------------------------------------------------
ご解答ありがとうございます。
返答が遅れてすいません。
まず最初にですが、変数の名前に日本語を使って頂いてありがとうございます。
まだ慣れてないので、変数が複数あると、どこまでが変数で、
どこからがVBAの構文なのか見分けるので目いっぱいという感じです。
ちょっと慣れたので、とりあえず変数を1個使うところから取り組んでいます。
で、、、肝心の内容ですが、
Callなんてステートメントがあるんですね。勉強になりました。
Callステートメントについて聞きたいこともあるのですが、、、
今、聞いてもわからないと思うので、また次回にします。
今回はご解答ありがとうございます。
追記
No.3の図形の名前の話は補足に入力しておきます。
僕も同じ名前の図形が1枚のシート上に存在出来ると知りませんでしたので。
No.3
- 回答日時:
実はこちらも勉強させていただきました。
オートシェイプなど図形の名前って一意(重複が禁止されている)と思っていたのですが、他のシートからコピーをした場合は同じ名前でも通ってしまう事に気づきました。本当はその辺の処理もチャントしないといけないのですが省いているのでお気をつけ下さい。
いつもご解答ありがとうございます。
No.2に記載した通り、図形の名前の件は
補足にアップしておきました。
軽く確認して頂ければ嬉しいです。
今回はいろいろ勉強になりました。
機会がありましたらまたお願いします。
No.1
- 回答日時:
「横書きテキストボックス(図形)の名前」と「どこに貼り付けるか」のリストみたいなものはないのでしょうか?なければ共通事項をまとめる
位であまり大した改善にはならないと思いますが必要でしょうか?早速のご解答ありがとうございます。
>「横書きテキストボックス(図形)の名前」と「どこに貼り付けるか」のリストみたいなものはないのでしょうか?
↓
順番にいきますね。
横書きテキストボックス(図形)の名前/貼り付ける場所
1)テキストボックス1 / B10(Sheet2)
2)テキストボックス2 / B15(Sheet2)
3)テキストボックス3 / B20(Sheet2)
という感じです。
Test1、Test2のコードと同じシート、同じ場所でOKです。
場所の指定はRange("B10").Select で、横書きテキストボックスの左上がB10セルのところにいきます。
「横書きテキストボックス(図形)の名前」、貼付け場所ともにTest2のコードを参照して頂いて
同じ名前と場所でOKです。
※こちらの書き方の方が見やすいかもです。
テキストボックス1(B10(Sheet2))、テキストボックス2(B10(Sheet2))、
テキストボックス3(B10(Sheet2))
いつもご解答ありがとうございます。
続きがあるようですので、楽しみにしております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
エクセルVBAで画像を貼り付ける座標設定方法は?
PowerPoint(パワーポイント)
-
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
-
4
VBA Shapes コピーと名前
Excel(エクセル)
-
5
エクセルで別シートの同じ位置にオブジェクトをコピーしたい
その他(Microsoft Office)
-
6
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセルVBA 図形の選択法は?
Visual Basic(VBA)
-
9
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
10
マクロで選択した図形の選択状態を解除するには
Excel(エクセル)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
エクセルVBAですが教えてください。オートシェイプがコピーされません。
Excel(エクセル)
-
13
ワードの図形をコピー&ペイストのマクロ
Word(ワード)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
EXCELで別シートのセル内に画像の貼り付けをしたいのですが・・・
Excel(エクセル)
-
16
エクセルVBAでセル番地を指定してオブジェクト名取得
Excel(エクセル)
-
17
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
18
エクセルで複数のシートに画像のはりつけ
その他(Microsoft Office)
-
19
エクセルでエラーが出て困っています。
Excel(エクセル)
-
20
Excel(VBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointで台形を描く方法
-
pdf上に描画した図形が印刷され...
-
線を組み合わせた図形の塗りつ...
-
AutoCADで渦巻きを描く方法
-
ワードかエクセルの図形を使っ...
-
グーグルスプレッドシートの図...
-
Canvaの図形は、縦横比をキープ...
-
図形でしずく型を作りたい
-
Excel 図形へのハイパーリンク
-
エクセル ユーザーフォームに...
-
Illustratorでくくり括弧記号を...
-
Excel のバージョンによって、...
-
エクセルVBAで図形のテキストを...
-
エクセルで図形を連動させたい
-
Jw-cad の図形リストが表示でき...
-
図形とビットマップの違いは?
-
クリックしたらパネルがめくれ...
-
Excelの図形の中に記載したテキ...
-
Excel2007 図形をグループ化で...
-
ワードの基本図形で 角丸四角と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PowerPointで台形を描く方法
-
pdf上に描画した図形が印刷され...
-
グーグルスプレッドシートの図...
-
線を組み合わせた図形の塗りつ...
-
Excel のバージョンによって、...
-
ワードかエクセルの図形を使っ...
-
AutoCADで渦巻きを描く方法
-
図形でしずく型を作りたい
-
エクセルで図形を連動させたい
-
Illustratorでくくり括弧記号を...
-
Excel 図形へのハイパーリンク
-
クリックしたらパネルがめくれ...
-
エクセル ユーザーフォームに...
-
Canvaの図形は、縦横比をキープ...
-
WORDで図に網掛けする方法は?
-
エクセルVBAで図形のテキストを...
-
Excel2003図-扇形を書く方法は...
-
ワードの基本図形で 角丸四角と...
-
G.CREWの使い方
-
Jw-cad の図形リストが表示でき...
おすすめ情報
補足
横書きテキストボックスがあるシート(最初のアクティブシート)はSheet1です。
早速のご解答ありがとうございます。
軽く動作チェックしたところバッチリでした。
夜以降に改めてコードを見て、お礼をさせて頂きます。
今回はご解答ありがとうございます。
ご解答ありがとうございます。
図形の名前って同じ名前でも同一シート上に存在出来るので、
図形の名前の確認と変更は必要ですね。
私も今回初めて知りました。
操作は以下の通りです
1)図形を選択する
2)リボンの描画ツールの書式を選択する
3)オブジェクトの選択と表示を選択すると
4)ポップアップウインドウが表示されて図形の名前が表示される
5)ポップアップウインドウの図形の名前の右にある「目」のアイコンで
表示/非表示を切り替えて、図形の選択を確認する
6)名前の変更は「目」のアイコンの左サイドで行う
というかんじですよね。
他の方の参考のためにアップしておきます。
※画像はEXCEL2010での操作です。