- 締切済み
複数シートへのリンク貼り付けについて
エクセルマクロ勉強中です。 シート1のセルA2の値をシート2のセルA1にリンク貼り付け。シート2のセルA2の値を シート3のセルA1にリンク貼り付け。このスタイルでシートを増やして行った時、それぞれのシート間でコピー、リンク貼り付けをしなくても自動的にコピー、リンク貼り付けが出来るマクロがあれば教えて下さい。 又、各シート名を変更してもリンク貼り付けの設定が変わらないように出来るでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。 その後考えて、下記のようなのが、お望みのことかな(自然では)とやってみた。2013です。 VBAのための操作は 開発タブ 挿入 ACTIVEXコントロール コマンドボタンをクリックして選択 シート上でクリック ボタンの大きさと位置を適当にする コマンドボタンのプロパティで Captionを「シート追加」と入力する。 ボタンのクリックイベントに Private Sub CommandButton1_Click() sn = ActiveSheet.Name MsgBox "現シート=" & sn nsn = InputBox("追加新シート名=") Worksheets(sn).Copy After:=Worksheets(sn) ActiveSheet.Name = nsn ’追加コード(略) End Sub このボタンをクリックすると、そっくり同じシートがコピーされる。コマンドボタンもコピーされる。 ユーザーが新シートが必要と判断したとき実行される(ボタンを押す)ので、より適当かと考えた次第。 ーー 上記のコードの「追加コード(略)」のところへ (1)新シートでは消すべきセル範囲のデータ消去のためのVBAコードを入れる。 (2)元のシートから新シートへの、引き継ぐべきデータを新シートのセルに代入するVBAコードを書く。 新シートでは、データ表の見出し、書式や数式や関数式などは引き継ぎたいことが多かろうから、上記のようにする。 >シート2のセルA2の値を シート3のセルA1にリンク貼り付け の必要性を小生は理解できず、未対応。 ーー これでも自力で作るのは中級クラスの対応かと思う。
- imogasi
- ベストアンサー率27% (4737/17069)
>シート2のセルA1にリンク貼り付け なんて、>リンク貼り付けと、おおげさに言わなくても、シート2のA1に=Sheet1!A2とすればよい。 またはシート2のA1に、シート1のセルA2の値を代入すればよいのではないですか。 初心者なら「リンク貼り付け」などいわず、値の代入でよいのではないか。 ーー >シートを増やして行った時、==>新しいシートを挿入したとき? 初心者がやるにはむつかしすぎるが、ThisworkbookのWorkbookのNewsheetイベントがあるので Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox "シートを増やします" sn = InputBox("現在・前シートのシート名は") x = Sheets(sn).Range("A2") Sh.Range("A1") = x End Sub のようなこともできる。しかし操作をするシート名(元のシート名)はVBAで引き継げないと思うので、 (どのシートを引き継ぐか決定できないので(シートを増やす必要になった時、そのサインを使用者にさせて、新シートに質問のようなデータ設定をVBAでするならむつかしい点は起こらない) 「sn = InputBox("現在・前シートのシート名は")」が必要と思う。 (上記Shは自動で名づけられる新シート名。) これも、質問者のニーズに対し、不十分かもしれない。 何かの拍子に、エクセルのこのブックの使用者がシートを増やすと質問者の思惑と外れるほうに行ってしまうかも。 初心者の間は、自動的に引き継ぐにこだわらないで、関数やVBAによる代入で、手数でもしのぐべきと思う。 また基本は人間・使用者にやらすようにしたほうがよいと思う。
マウス操作をマクロとする事もできますが、って今は出来ないのかな。 コードだとすれば 1.最大シート数になった(符号なし整数で、0を判断) 2.YES おわり 3.sheet1 を複製 4.最後にコピー コピーできたらおわり 5.1へ ってのを考えて見ましたが、んんん、ダメか。