人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルで、複数の指定したセルをワンタッチで別シートの指定したセルにコピーできる方法を探しています。

マクロで可能ならその方法も教えて頂ければと思います。

上記の方法、もしくはこのような情報が掲載されているサイトを教えて下さい。
※エクセル上級者向けサイト等

●質問者: wagatsuma
●カテゴリ:コンピュータ
✍キーワード:エクセル コピー サイト セル マクロ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hiroaki5555
●35ポイント

エクセルマクロモジュール公開ページです。いかがでしょうか

http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv209.html

http://seadragon.info/excelvba/excel_library1.htm


2 ● kimuram
●35ポイント

単純な選択範囲のコピーではなく、離れたセル領域を複数選択してのコピーと受け取りましたがよろしいでしょうか?

通常は複数領域を選択してのコピーはできないからだと思います。

マクロで行うことにします。ただし、ワンタッチではこれも無理です。なぜなら、?どれを、?どこに、の二つのことを指定しなければならず、これをセルカーソルで一度に指定することはできないからです。

よって、ここでは、2段階で場所を指定して、それぞれにマクロの起動を行う方法を紹介します。

下記のようにマクロを準備して、

?まずコピーしたい領域を好きなように選択し、マクロ「multiRangeCopy」を起動します。(特に変化なし。しかし、この範囲を覚えてくれます)

?次に貼り付けしたい目的のシートを表示し、貼り付けセル場所の左上基準のセルを選択してマクロ「multiRangePaste」を実行します。

これでコピー元と同じセル相対位置で目的の場所にコピーされます。

'======================================

'モジュールレベルの宣言

Dim fromRange As Range

Dim toRange As Range

Dim myCell As Range

Dim myBaseRow

Dim myBaseColumn

'複数領域一括コピー

Sub multiRangeCopy()

Set fromRange = Selection

myBaseRow = Selection.Cells(1).Row

myBaseColumn = Selection.Cells(1).Column

MsgBox "これにOKを応答してから、コピー先の開始位置を指定し、multiRangePasteマクロを起動すると複数領域のコピーが行われます。"

End Sub

'複数領域一括貼り付け

Sub multiRangePaste()

Set toRange = ActiveCell

For Each myCell In fromRange

myCell.Copy

ActiveSheet.Paste toRange.Cells(1).Offset(myCell.Row - myBaseRow, myCell.Column - myBaseColumn)

Next

End Sub

'======================================

マクロの起動にショートカットを登録してCtrl+Shift+文字、で起動すれば操作がもっと楽になるでしょう。(Ctrl+Shift+Cを複数領域コピー、Ctrl+Shift+Vを複数領域貼り付けに割り当てると、通常のコピーCtrl+Cと通常の貼り付けCtrl+Vとの対応ができ、わかりやすいと思います)

また、モーダレスのユーザフォームを利用してふたつのマクロの間をつなぐことも考えられますが、必ずしもいいともわからないので、まずは単純に二つの手順による上述のものが妥当かと思います。

※一つ注意があります。コピー元の複数セルを選択する際に、最も左上の部分を最初に選択してください。(これが基準になります)

URLはダミーです。

http://kimuram.plala.jp

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ