検索
タグクラウド
プロフィール
yoshimatsuさんの画像
yoshimatsu
60過ぎのおっちゃんです。同じ年齢層の中ではそこそこパソコンが使える方だと自負しています。今まで会社等で学んだ知識等を紹介していきたいと思います。

広告

posted by fanblog

2017年03月27日

ExcelVBA Copy

┏━[PR]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
 WordPressに特化したレンタルサーバー『wpXレンタルサーバー』
 ─────────────────────────────────
 ・最新の高性能サーバーマシン&高速ネットワーク
 ・大容量30GB、月額1,000円(税抜)〜
 ・リバースプロキシによるキャッシュなど、専用の高速システムを採用
 ・専用の管理ツールから簡単セットアップ
 ・過去14日間のデータの自動バックアップ機能
 ・独自ドメイン対応 & 1契約につき10個のWordPress運用が可能
 ─────────────────────────────────
https://px.a8.net/svt/ejp?a8mat=2NR2G3+DDNP6A+CO4+ZR2VN
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛




マイクロソフトアクセスの記事はこちら

人気ブログランキングへ



にほんブログ村 IT技術ブログ ソフトウェアへ
にほんブログ村


Copy


セルのコピーの場合は「Copy」を使用します。

引数「Destination」で貼り付け先を指定します。

Copy.png
上記「Sheets("sheet2").Range("a2").Copy Destination:=Range("c3")」を実行

するとA2の内容がC3にコピーされます。

※コピー方法というのは色々やり方があります。

単純にデータだけでいいのであれば「Range("C3")=Range("A2")」でも

実現できます。

Copyメソッドはデータだけでなく、書式等も含めセル全体をコピーします。

注)複数セルの場合は注意が必要です。

単純に「Range("C3:C5")=Range("A2:A4")」ではうまく行きません。

その場合はValueプロパティを使用しましょう。

「Range("C3:C5").Value=Range("A2:A4").Value」としてください。

先ほどの「Range("C3")=Range("A2")」もValueプロパティを省略して

いるだけなのです。

このあたりのことも知っておくとVBAを記述する際に、

簡潔なコードが書けると思います。

VBA上級者と初心者の違いというのは「同じ結果を得るために、いかに

簡潔にコードを記述出来るか」というところにあると思います。

またマクロの記録で作ると下のようになります。

Range("A2").Select

Selection.Copy

Range("C3").Select

ActiveSheet.Paste

記述している内容は分かりますし、正しいのですが、もっと簡潔に記述

できますね。

このようにマクロの記録も初心者の間はそのまま使用する方が楽ですし、

間違いないと思いますが、レベルアップしようと考えるならば、

マクロの記録をそのまま使用しない方が良い時もあります。

※それから別シートに貼り付ける場合

現在Sheet2がアクティブでA2のセル内容をSheet3のC3に貼り付けると

しましょう。

マクロの記録では下記のようになります。

  Sheets("Sheet2").Select

  Range("A2").Select

Selection.Copy

Sheets("Sheet3").Select

Range("C3").Select

ActiveSheet.Paste

これで動作はします。

しかしなにかごちゃごちゃしていますね。

どこに問題があるかというと「Select」が多用されているとこです。

これを少し書き換えると

Sheets("Sheet2"). Range("A2").Select

Selection.Copy

Sheets("Sheet3").Range("C3").Select

ActiveSheet.Paste

たったこれだけで随分すっきりしますね。

Selectも多用するのは考え物です。

何故ならばプログラムの実行に時間が掛かってしまうためです。

ですから出来るだけSelectは使用しないようにしましょう。

結局、最初に紹介した

「Sheets("sheet2").Range("a2").Copy Destination:=Range("c3")」

が一番簡単でしょうね。

マクロを考える際一番自動化したい部分はコピー・貼り付けだと思います。

それが大量にあればあるほど自動化したいものです。

そのためにCopyに関しては少し詳しく記載しました。




あの有名ショップも【 カラーミーショップ 】を…。



タグ: ExcelVBA,Copy
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6098061
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: