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] ピボットテーブルの生成時にメモリ不足(リソース不足)が発生する問題と解決方法

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

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

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

[Excel][VBA] ワークブック・ワークシートを明確に指定

前々回・前回に引き続き、セルに文字列を記入するときのコードについて考えてみます。 今回は、ワークブック・ワークシートを明確に指定する必要性を検討します。 なぜ指定するのか セルの操作をする際、ワークシ …

[Excel][VBA] 選択中のセルにハイパーリンクをセット

URLが入力されたセルがいくつもあるとき、それぞれのセルにハイパーリンクを設定するマクロを紹介する。 コード

参考: 手動でのハイパー …

[PowerPoint][VBA] スライドの追加

パワーポイントのスライドを作成する方法。 メソッド 単にスライドを挿入する場合は、PPT.Slides.Addでよい。 今回はテンプレートファイルからスライドをコピーする形を取ったため、いくつか工夫が …