• ベストアンサー

ExcelVBAで範囲のセルを別のシートのセルに代入する方法はありますか

ExcelVBAで範囲のセルを別のシートのセルに代入する方法はありませんか。 範囲でなく、一つのセルだけなら代入できるのですが、範囲にすると代入先が空白になってしまいます。 例えばSheet2のC1~C3をSheet1のB1~B3に代入したいとき Sheets("Sheet1").Range("B1:B3") = Sheets("Sheet2").Range("C1:C3") この記述だとSheet1のB1~B2までが空白になってしまいます。 アクティブシートが変わると処理がおかしくなるのでコピーペーストは使いにくいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kouji_124
  • ベストアンサー率46% (283/605)
回答No.1

代入したいのは「値」と言う事で宜しいでしょうかね。 原因は[Value]が省略されている為だと思います。 Sheets("Sheet1").Range("B1:B3").Value = Sheets("Sheet2").Range("C1:C3").Value 上記の様にすれば大丈夫な筈です。 因みに、1つのセルの値をコピーする時に下記の様にしていませんか。 Sheets("Sheet1").Range("B1") = Sheets("Sheet2").Range("C1") 上記でも動作しますが、正確には下記の様に記述します Sheets("Sheet1").Range("B1").Value = Sheets("Sheet2").Range("C1").Value 日頃から「Value」等を省略しないようにすれば今回の様なトラブルも防げると思います。

ff11111111
質問者

お礼

出来ました! 個々のセルを代入するときは省略しても問題なかったのでいつもValueは省略していました。 今後はValueを習慣付けようと思います。 ありがとうございました。

関連するQ&A

  • ExcelVBA 変数を使った別シートセルのCellsでの範囲指定について

    ExcelVBAで変数を使って別シートのセルをCellsで範囲指定をすると、 「アプリケーション定義またはオブジェクト定義のエラーです。」と 表示されます。 Sheets("Sheet1").Range(Cells(1, CNT), Cells(10, CNT)).Value 同シート内ならエラーは出ないのですが、処理中にアクティブシートを 変えたくありません。 何かよい方法はないでしょうか。

  • ExcelVBAで複数セルを別シートに貼り付けたい

    Excel VBAでデータをコピーして、別シートに貼り付けるどうしたらいいのでしょうか。 Sheet1のセルA1からA4のデータをコピーして、Sheet2のC2からc5に貼り、次はSheet1のセルB1からB4のデータをコピーしてSheet2のC7からc10に貼りを500行ほど繰り返し(コピーするデータは、4行づつ横へ移動し、貼り付けるほうは4行づつ縦へ移動します。) それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します。 いろいろな方法を試しましたが、なかなかうまくいきません。 どなたか教えていただけませんでしょうか。よろしくお願いいたします。

  • Excelのセル範囲コピー

    ExcelVBAでセル範囲を指定して別のセル範囲にコピーします。 このとき、コピー元が空白のセルはコピーしない、あるいはコピー先のセルに関数が定義されていればコピーしないようにする方法はあるでしょうか。 もちろん、1セルごと処理すればできますが、スピードアップの為、範囲指定してまとめてやりたいのです。 バージョンは2003以降です。

  • 指定記号のみ別シートにコピー

    sheet1(表-1)の入力文字「A,C,E」をsheet2へコピーする。 sheet2(表-3)のように[A,C,E」以外及びsheet1空白のセルはsheet2でも空白としたい。 その際、sheet2(表-2)に入力済みの記号「○、●、◎」はそのまま残したい。 下記のコードでは、sheet2に入力済みの記号「○、●、◎」が消えてしまいます。 どなたかコードがわかる方よろしくお願いします。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:D5") If WorksheetFunction.CountIf(Range("A8:A10"), r.Value) Then Sheets("sheet2").Range(r.Address).Value = r.Value Else Sheets("sheet2").Range(r.Address).Value = "" End If Next End Sub セルA11に"0"を入力して実行してもsheet1空白セルはsheet2でも空白となり困っています。

  • excelvbaでセルの範囲について

    Sub Macro2() Sheets("売上まとめ").Select '選べる範囲を指定  Set myRng9 = Range("B2:B15") '選択した範囲を myRng1に割り当てる Set myRng1 = Application.InputBox("全部は選択しないで下さい", "必要売上を「B2:B15」から選択", Selection.Address, Type:=8) myRng1.Resize(1, 2).Offset(0, -1).Select  皆様どうかよろしくお願いいたします。 まずB2セルからB15セルの間に数字が入力されています。 上から下に向けて続けて数字が入力されていますが 下の方は空白の場合があります。 (例 B2からB10は入力あり。B11からB15は空白) まず、インプットボックスで数字が入力されている範囲を B2セルから下方向に操作者に選択させます。 (例えばB2からB7まで。) この範囲をmyRng1としています。 目標として選んだ範囲を1列左に拡張させて 選択させたいのですが、 (例 B2だけ    を選択していたらA2からB2まで    B2からB8まで を選択していたらA2からB8まで) その部分を現在 こう記述しております。 myRng1.Resize(1, 2).Offset(0, -1).Select  単一セルだけを選択している場合は キチンと左方向に拡張させて選択できるのですが (例 B2だけ    を選択していたらA2からB2まで) 複数範囲を選択している場合でも同じ結果になってしまいます。 例 B2からB8まで を選択していてもA2からB2まで) どうかよろしくご指導お願いいたします。

  • エクセルの範囲セルの範囲セルについて

    ExcelVBAで、ある範囲のセルを基準として、その範囲の中の範囲を表したい のですが、どうすればよいのでしょうか? 以下のセルで、A1:D2の範囲を使ってA2からD2の範囲を表す方法です。 A1 B1 C1 D1 A2 B2 C2 D2 A2のセルはRange("A1:D2").Cells(2,1)で表すように Range("A2:D2")でなく、Range("A1:D2")を使ってA2からD2の範囲を表す方法が知りたいです。

  • ExcelVBAで複数範囲した色セルと、条件で別セルも同色になるようにしたい

    ▼Excel2003を利用でSheet1とSheet2を使っての質問です▼ 下記に簡単に事例を記載いたします。(※実際にはデータが沢山あります) ★Sheet1にはA1~G3範囲横7列縦3行の表があり、表中にはA1、B1、C1、D1が空白でその次からは1~17までの数字が横列に沿って順次入っています。G3セルが最後の数字の17となっています。 横7列に入っている数字はA1、A2、A3、A4空白のセル以外は列毎にセル背景色が異なり全部で7色入っています。 ★次にSheet2に新たにA1~D4範囲内に表を作り、順次セルに数字値を入力し、例えばSheet2のA1セルが1だったら、そのSheet2のA1セル背景色をSheet1の表中の1が入力されているセルと同じ背景色にしたいです。 以上の課題をExcelVBAを使って解決したいのですがご存じの方いらっしゃいましたらVBAでどうプログラミング表現すれば良いか教えていただければ幸いです。 ちなみに私自身はExcelVBAを一度も使ったことがなく初心者です。 恐縮ながらもよろしくお願い申し上げます。

  • ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。

    ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。 範囲は ”セル範囲”という名前で取得しましたが、その中にデータの入っていない 空白のセルに0を代入したいのです。 xlCellTypeBlanksを使うといいのでしょうか? 会社でのデータ処理で必要なので困っています。 初心者なのでよろしくお願いいたします。

  • ExcelVBAでの結合セルの選択について

    ExcelVBAの超初心者です。 3つを1つのセルに結合したものが横に15個並んでいます。 毎月、一つ右隣のセルに別シートの集計結果を転記させたいと考えています。 (ちなみに、左端から2つの結合セルは項目として使用しており、そこも結合されています) Range("A6").End(xlToRight).Offset(0, 1) = Sheets("前年・予算").Range("B15") 上記のように入力すると、右隣に移動せず、いつも同じセルに転記されてしまいます。 インターネットでいろいろ検索したところ、「結合セルはVBAには適さない」みたいな 意見もあり、もしかしたら出来ないのかな?とも思っています。 もし、やり方をご存じの方がいたら方法を教えて欲しいです。 よろしくお願い致します。

  • エクセル 範囲の代入

    あるセルに入力された「範囲(C10:C13など)」を 別のセルの関数式に用いることができませんか? 具体的には、 A列:項目番号 B列:区分 ※A列の項目番号が入った行のB列には、項目名が入り、C以降は空白。 C列:種別 D列:名称 E列:詳細 ※B列の区分が入った行は、A列は空白・C~E列に各入力があります。 といった表が25シートあります。 項目毎にいくつの区分をもっているか・各種別がいくつづつかを カウント式で表記を 手作業になってしまいましたが、 ひとまず 25シート全ての A列に項番の入った行のF列に 項目毎の区分数を COUNTAを使って表示させてみました。 そこから範囲を抜き出し B列の区分毎のカウントを、COUNTIFを用いて (例えば、項番1の「A」はいくつか・「B」はいくつか、項番2の「A」はいくつか・「B」はいくつか・・) を出したいのですが・・・うまくいきません。 →F列に代入した式から、範囲式部分(例えばC14:C36・・・)をG列に抜き出し、  それをCONUTIFに代入できないか? というものです。 もちろん、別の方法があれば上記のやり方に こだわりはありません! 知識不足につき お手数とは存じますが、ご教示いただけますと助かります。 よろしくお願い致します。

専門家に質問してみよう