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

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

関連記事

[PowerPoint VBA] PowerPoint.Shapes.Chart エラー発生

パワーポイント2007のVBAで、予想外のエラーに遭遇し、解決できたのでメモ。 いきなり結論 パワーポイント2007は、インストール直後はPowerPoint.Shapes.Chartを実装していない …

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

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

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

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

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

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

[Excel][VBA] クリップボードを経由しないコピーを勧める理由

自分の作ったエクセルマクロには、クリップボード経由のコピーは皆無だ。 その理由はいたってシンプルだ。 クリップボードを使わない理由 自分がマクロでクリップボードを使わない理由はたった1つ。 「ほかの作 …

[PowerPoint][VBA] パワーポイントのテキストボックスへ値をコピーする方法

パワーポイントのテキストボックスへ値をコピーする方法。 単に値を記入するだけではなく、数値がプラス・マイナスの場合に応じて色をつける処理を挿入してある。 コード [crayon-5bf03362eb4 …