
お世話になります。
マクロで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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
VBA Shapes コピーと名前
Excel(エクセル)
-
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
-
4
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
7
エクセルで別シートの同じ位置にオブジェクトをコピーしたい
その他(Microsoft Office)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
VBAマクロで、図形等のオブジェクトを選択(特定)する方法ってありますか
Excel(エクセル)
-
10
Excel(VBA)
Excel(エクセル)
-
11
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
14
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
15
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
16
エクセルVBAで選択状態を解除のしかた
Excel(エクセル)
-
17
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
18
エクセル2003で、複数のシートに一度に図を貼り付けたい
Excel(エクセル)
-
19
自動で.xlsを閉じて指定フォルダに移動させたい
Visual Basic(VBA)
-
20
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】別ファイルへマクロ...
-
線を組み合わせた図形の塗りつ...
-
PowerPointで台形を描く方法
-
pdf上に描画した図形が印刷され...
-
図形でしずく型を作りたい
-
Excel のバージョンによって、...
-
AutoCADで渦巻きを描く方法
-
ワードかエクセルの図形を使っ...
-
エクセル ユーザーフォームに...
-
エクセルVBAで図形のテキストを...
-
visioで図形を自由に回転したい
-
Excelの図形の中に記載したテキ...
-
Excel 図形へのハイパーリンク
-
Illustratorでくくり括弧記号を...
-
パワーポイントで作成した複数...
-
グーグルスプレッドシートの図...
-
ワードの基本図形で 角丸四角と...
-
VBA 図形のテキスト取得
-
Excel2003図-扇形を書く方法は...
-
図形とビットマップの違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PowerPointで台形を描く方法
-
pdf上に描画した図形が印刷され...
-
線を組み合わせた図形の塗りつ...
-
Excel のバージョンによって、...
-
ワードかエクセルの図形を使っ...
-
図形でしずく型を作りたい
-
エクセルVBAで図形のテキストを...
-
AutoCADで渦巻きを描く方法
-
Excel2003図-扇形を書く方法は...
-
クリックしたらパネルがめくれ...
-
Illustratorでくくり括弧記号を...
-
グーグルスプレッドシートの図...
-
エクセル ユーザーフォームに...
-
Jw-cad の図形リストが表示でき...
-
Excel 図形へのハイパーリンク
-
算数です 文章問題とか図形に出...
-
VBA 図形のテキスト取得
-
エクセルで図形を連動させたい
-
図形とビットマップの違いは?
-
WORDで図に網掛けする方法は?
おすすめ情報
補足
横書きテキストボックスがあるシート(最初のアクティブシート)はSheet1です。
早速のご解答ありがとうございます。
軽く動作チェックしたところバッチリでした。
夜以降に改めてコードを見て、お礼をさせて頂きます。
今回はご解答ありがとうございます。
ご解答ありがとうございます。
図形の名前って同じ名前でも同一シート上に存在出来るので、
図形の名前の確認と変更は必要ですね。
私も今回初めて知りました。
操作は以下の通りです
1)図形を選択する
2)リボンの描画ツールの書式を選択する
3)オブジェクトの選択と表示を選択すると
4)ポップアップウインドウが表示されて図形の名前が表示される
5)ポップアップウインドウの図形の名前の右にある「目」のアイコンで
表示/非表示を切り替えて、図形の選択を確認する
6)名前の変更は「目」のアイコンの左サイドで行う
というかんじですよね。
他の方の参考のためにアップしておきます。
※画像はEXCEL2010での操作です。