Square Beat Engine

Blog for variety of things…

MS-Office

[Excel][VBA] セルの値を転記する方法

投稿日:2014-12-13 更新日:

エクセルでマクロを作る際に、もっとも基本となるのは、「セルの値を転記する」という処理だと思います。

セルの値を転記する方法は、いくつか存在します。

  • クリップボード経由でコピーする。
  • 値を直接転記する。(Valueプロパティ)
  • 配列を経由して転記する。

このうち、もっとも分かりやすいのはクリップボード経由。(関連記事もご覧ください)
手動で操作する手順をそのままマクロにするだけでよいため、直感的に理解しやすいのですが、デメリットが大きすぎるためお勧めできません。

そこで今回は、もっと簡単で高速に処理できる方法を紹介します。

セル間の値のコピー:Range.Valueプロパティ

RangeオブジェクトのValueプロパティを用いると、とても簡単に値を転記することができます。

実用例

特に、Resizeプロパティを使ってセル範囲を丸ごと転記する方法はかなり便利で、実用的には以下のようになるでしょう。
最後の行は、ワークシートオブジェクト(sheetTo/sheetFrom)の後がすべて同じなので冗長だが、Withも使えずこう記述するしかなさそう。
むしろいい方法があれば教えてください。

Valueプロパティの引数

Excel2007より、Valueプロパティに引数を与えることにより、値だけでなく書式も含めたすべてを転記することもできるようになった。

XlRangeValueDataType 列挙

追加バージョン:  Excel 2007

名前 説明
xlRangeValueDefault 10 既定値。指定した Range オブジェクトが空の場合は Empty 値が返されます。これを調べるには、IsEmpty 関数を使用します。Range オブジェクトに複数のセルが含まれているときは、値の配列が返されます。これを調べるには、IsArray 関数を使用します。
xlRangeValueMSPersistXML 12 指定した XML 形式の Range オブジェクトのレコードセットの表示を返します。
xlRangeValueXMLSpreadsheet 11 指定した XML スプレッドシート形式の Range オブジェクトの値、書式設定、数式、名前を返します。

関連事項とか

この記事は、初めてのOffice関連の投稿として、基本中の基本となる、値の転記を選んでみました。
これに関連して、書き切れなかった関連事項の記事も書いているので、是非参照してください。

ワークブック・ワークシートを明確に指定する必要性

クリップボードを使ってはいけない理由

行列入れ替えの転記(未作成)

以上!

-MS-Office

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[Excel][VBA] オブジェクト名のワナ

Excel 2010のVBAで、ActiveXコントロール(VBA内ではOLEObject)の名前に罠があることに気づいたのでメモ。 「OLEObjectがうまく動作しない!」と嘆く誰かを1人でも救い …

[VBA] 数値からRGBを求める関数

VBAでは、RGB関数を実行して数値を求めることは可能だが、数値からRGBの各値を得る関数は存在しない。 プロパティから色を取得すると数値で表現されるため、数値からRGB値を求める関数を作成してみた。 …

[VBA] ユーザー定義型の使い方

VBAでは、自分で型を定義することができる。 異なる値をひとまとめに扱いたいときに使うと、取り扱いがぐっと楽になる。 ユーザー定義型の構文 宣言部分(モジュール内の冒頭、Optionalのすぐ後)に、 …

[Power Point][VBA] スライド番号の挿入

自動的に番号が更新されるスライド番号をテキストボックスに挿入するには、以下のメソッドを使う。

注意点:Replaceによる解除 スライ …

[Excel][VBA] ピボットテーブルの生成時にメモリ不足(リソース不足)が発生する問題と解決方法

エクセルで、ピボットテーブルを生成するマクロを使っていたのだけど、データが大きいとメモリ不足で動作しないことがあったため、改善した。 同じ問題で困っている人のために、自分の解決方法を記載しておくことに …