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


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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/04/12 23:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:hiroaki5555 No.1

回答回数10ベストアンサー獲得回数0

ポイント35pt

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

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

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

id:kimuram No.2

回答回数27ベストアンサー獲得回数11

ポイント35pt

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

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

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

よって、ここでは、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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません