重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルである表を作成しています。
基礎となる表にはわかりやすく書き込みがしてあります。仮にシート1とします。
その書き込み方法は、挿入のテキストボックスとか図形の矢印とかです。
このシート1とエクセルの表の幅とか文字の大きさをそっくりそのまま、同じにしたいです。そのために、シートに右クリック→移動またはコピーによって、同じものを作りました。これをシート2とします。
そこで、シート2は回覧物で人にお見せお渡しするものなので、シート1で作ったテキストボックスや矢印や赤色の枠とかを一気にまとめて消したいです。出来ますか?
また、シート1は基礎で母体にしようと思ってます。そのため、何回も書き直します。これだと毎回、シート2は書き直した分、中身が変わってしまいます。そこで、エクセル関数で=使って、シート1の該当セル箇所を引用する様にしたいです。言いたい事わかりますよね?ところがセルが結構な数あるので、面倒くさいです。どうしたらいいですか?シート2のそれぞれのセルを=にして、シート1該当セルを引用していく。それを一気に終わらせる方法です。マクロでもなんでもいいです。いい知恵をお貸しください。

A 回答 (3件)

>シート1は基礎で母体にしようと思ってます。

そのため、何回も書き直します。
>これだと毎回、シート2は書き直した分、中身が変わってしまいます。
つまり、「常に最新版のシート1を回覧用のシート2にも反映するようにしたい」
という意味でよろしいでしょうか?
ただし、
>シート1で作ったテキストボックスや矢印や赤色の枠とかを一気にまとめて消
>したいです。
を実現しなければいけせんので、sheet1に「図形等削除コピー」などというボタンを配置して、そのボタンにマクロを登録しておくというのはどうでしょう。

マクロボタンも「図形等削除コピー」を使えば消去されますので、ご希望の形でsheet1がsheet2に問題なくコピーされると思います。

とりあえず簡単なサンプルは以下のようなものです。
古いsheet2(ここでは「回覧用」というシート名にしています)があったら削除して更新します。削除するときに一旦アラートが表示されます。

Sub sample()
Call delete_exists_f("回覧用")
Sheets("Sheet1").Activate
Worksheets("Sheet1").Copy after:=Worksheets(1) ' シート1の後にコピー
ActiveSheet.Name = "回覧用" ' 名前を付ける
ActiveSheet.DrawingObjects.Select 'オブジェクトを選択
Selection.Delete 'オブジェクトを削除
End Sub
Sub delete_exists_f(strSheetName As String)
Dim objWorksheet As Worksheet
'全てのシートをループする。
For Each objWorksheet In ThisWorkbook.Worksheets
If objWorksheet.Name = strSheetName Then '同名シートがあったら
objWorksheet.Delete '削除
Exit For
End If
Next
End Sub
    • good
    • 0

其れなら、



シート1全体を 選択し、
コピー、
しーと2に 「形式を選択してコピーベースト、」中の、
「値、」を 選択して、
ペースト、

此では 如何でしょう?
    • good
    • 0

>言いたい事わかりますよね?


え、いや…あんまり。

とりあえず、オブジェクトを全部消すのは

Ctrl+G→セル選択ボタン→オブジェクトを選択→OK→Deleteキーを押す

でできませんか?
    • good
    • 0

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