|
|
| Excel VBA Macro ・ コピー ・ FAQ |
|
指示されたセル範囲をコピーして別シートへ値を貼り付けるには?
|
|
|
|
Question 5306 |
拙著「Excel VBA そのまま使える実用マクロ 500連発」 |
 |
 |
|
|
サンプルNo.315 ◆ 環境・・ Excel 2003 & Windows XP
いつも助けてもらって、ありがとうございます。 質問はコピーのループです。
シート1の B11:B60 に1組の名簿、B61:B110 に2組の名簿、B111:B160 に3組の名簿 が入っています。
シート1の A1に 1 から 5 の数字を自分で入れてボタンを押すと、
A1で選択した組の名簿の値のみがシート2の B11:B60 にコピーされるように
したいのです。
一組だけは出来るのですが…。 よろしくお願いします。
|
|
Answer |
Copyright (C) 2007.6.10 永井善王 |
|
|
拙著 「Excel VBA そのまま使える実用マクロ 500連発」 を お求めいただき、ありがとうございます。
315番は 「セル範囲をコピーして全て貼り付けする」 と題するサンプルですね。
「一組だけは出来るのですが…。」と仰るのは、下記回答マクロの下から 3行目と2行目にあるコピー貼り付けのコードに相当する部分ができたということですね。
そして、知りたいことは、右図のような [ボタン]がクリックされたら、A1セルの値を判定してコピーするセル範囲を決定し、それをコピーして Sheet2へ貼り付けるための下記のようなコードですね。
Sub 指示されたセル範囲をコピーして別シートへ値を貼り付ける()
If Range("A1").Value = 1 Then
セル範囲 = "B11:B60"
GoTo コピー貼り付けする
ElseIf Range("A1").Value = 2 Then
セル範囲 = "B61:B110"
GoTo コピー貼り付けする
ElseIf Range("A1").Value = 3 Then
セル範囲 = "B111:B160"
GoTo コピー貼り付けする
End If
MsgBox "A1セルの値が不正です。", ,"すぐマク"
Exit Sub
'
コピー貼り付けする:
Range(セル範囲).Copy 'コピーする
Worksheets("Sheet2").Range("B11").PasteSpecial Paste:=xlPasteValues '値を貼り付け
End Sub
このマクロを [ボタン]に登録して完成させます。
【参考】
・「値のみ」の意味ですが、コピー範囲には数式が存在するが、貼り付け先には数式を貼り付けないで値だけを貼り
付けたいということですか? もし、そうであるならば、もうひと工夫、必要になります。
クリップボードを経由せずに値だけをコピー貼り付けしたいが? etc.
サンプルブックのダウンロードは ここをクリック
(YNxv99119_Copy.xls 50KB) ※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。
|
|
|
|
|