エクセルVBA技術通信 

エクセルVBAのシステムを20倍早く使い易くする方法!をマクロ開発10年の専門デベロッパーが大公開。エクセルマクロのおもての技術、うらのノウハウ満載の技術情報マガジンです。

現在休刊中です    
解除

規約に同意して

          

サンプル誌

■◇------------------------------------------------------------◇■
エクセルVBA技術通信

〜 エクセルVBAのシステムを20倍早く使い易くする方法! 〜 Vol.01
                 
□■------------------------------------------------------------□■


みなさん、こんにちは。はじめまして、
当メルマガ「エクセルVBA技術通信」テクニカルライターの三太郎です。

今日からいよいよ始まりましたこのメールマガジンは、WATエクセルカス
タマイズセンターがお届けするエクセルのVBAに関する技術情報マガジン
です。



エクセルVBAシステムの開発一筋10年!、当センターが長年培って来た
エクセルVBAのシステムやツールを作る上での技術、ノウハウ、裏わざ、
表わざの数々と、その他もろもろのテクニックなどを、エクセルに携わる全
てのユーザーの皆さん、並びにデベロッパー(開発者)の皆さんへ、余すこと
なく一挙大公開していきます。


ユーザーもしくはデベロッパーの別を問わず、特に日頃から大量のデータを
扱うことが多いという方に、是非読んでいただきたいと思っています。


マクロを使う側のユーザーの皆さんが、依頼したソフトハウスのSEに「エ
クセルVBAなんで、これが限界です」なんてもう言わせないために。。。

また、

マクロを作る側のデベロッパーの皆さんが、依頼されたユーザーさんに「エ
クセルVBAなんで、これが限界です」なんて言い訳をもうしなくても済む
ために。。。

是非、役立てていただきたい内容のメールマガジンです。



--【本誌テクニカルライターのご紹介】--------------------------------

 三太郎(エクセルVBAアドバイザー):
 IT業界歴20年、当センターの代表を勤めるVBA歴10年以上の
 つわもの(!?)です。

 さとちゃん(エクセルVBAエンジニア):
 元々は制御系のエンジニアで、日本で5本の指には入る(!?)と自負する
 C言語のエキスパート、エクセルVBA歴は3年弱です。

--------------- (^^)-(^^)-(^^)-(^^)-(^^)-(^^)-(^^) ---------------



それでは、さっそく今日の本題に入っていきます。

第一弾となる今回は、「エクセルVBA高速化ランキング」と題したシリー
ズを、今日から数回に分けて発表していきたいと思います。



今回発表していく高速化ランキングでは、「ちょっとしたテクニックを使う
だけで、エクセルVBAがこんなにも早く、サクサクと動くようになる!」
といった内容を、その効果の高い順に独断と偏見もまじえてランキングし、
同時に実測した結果も発表していこうというものです。


それでは、さっそく今日はその第1位の発表です。
(本来なら下から発表するのが筋なんですが、今回はワケあって(後ほど
お話しますが。。。)いきない1位!から発表させてもらいます。)



--【今日の本文記事】------------------------------------------------

     「エクセルVBA高速化ランキング」第1位!

--------------------------------------------------------------------



ちょっと前置きになりますが、VBAのAというのは言わずと知れた(!?)
アプリケーションの頭文字のAを指す訳ですが、エクセルVBAの場合は、
このアプリケーションが=(イコール)「エクセル」ということに他なりま
せん。

一方、コンピュータシステムというものは、通常、入力・処理・出力の3つ
のセッションからなっていますが、この内、入出力とりわけ出力というのが
レスポンススピードのネックとなる場合が極めて多いものです。

エクセルVBAの場合は、この入出力の主なものは言うまでもなく「エクセ
ルシート」と言うことになりますので、他のコンピュータシステム同様、
エクセルVBAの場合には、エクセルのシートへの入出力(とりわけ出力)
というのが、VBAの処理スピードを左右する一番の要因である場合が極め
て高いということになります。


そこで、このエクセルシートへの読み書きを早くする方法として、最もよく
知られているのが、今日「エクセルVBA高速化ランキング」第1位として
発表する「画面更新の非表示」というものです。


構文
―――――――――――――――――――――――――+
    Application.ScreenUpdating = False
―――――――――――――――――――――――――+


これは、知る人ぞ知るエクセルVBAの高速化にはダントツで効果大である
ことはよく知られていますから、今回あえて第1位から発表した(発表せざ
るを得なかった)理由というのも、もし下から発表していったら1位はこれ
だ!って最初からバレバレなので、ランキング発表の面白みが半減してしま
うことを恐れての理由からです。


で、これがどれだけダントツの1位かというと、
下記のサンプルプログラム(単純に1000行×100列のセルに数字の1を表示
させる)の測定では、

 サンプル1が 154秒
 サンプル2が  11秒

という具合に、圧倒的な実に14倍の差が出ました。

ここまで目覚しい差がある以上、高速化といったらまずこの構文を使って
「画面更新の非表示」をやってみない手はありません。
これが、エクセルVBAを高速化させるための一番であることは疑う余地の
ない事実です。特にシートに対しての読み書きの多いプログラムの場合には
その効果は絶大です。




サンプル1
―――――――――――――――――――――――――+
    For i = 1 To 1000
        For j = 1 To 100
            Cells(i, j).Select
            ActiveCell.FormulaR1C1 = 1
        Next j
    Next i
―――――――――――――――――――――――――+


サンプル2
―――――――――――――――――――――――――+
    Application.ScreenUpdating = False
    For i = 1 To 1000
        For j = 1 To 100
            Cells(i, j).Select
            ActiveCell.FormulaR1C1 = 1
        Next j
    Next i
    Application.ScreenUpdating = True
―――――――――――――――――――――――――+



ですが、ちょっと待ってください!!

「画面更新の非表示」って、ほんとうにただ非表示にしてしまっていいんで
しょうか?
非表示って、詰る所ユーザーには見せない!ってことに他なりません。
いくら高速化したいからといって、デベロッパーが勝手にユーザーには見え
ないプログラムなんてものを作ってしまってもよいのでしょうか?


実は、当センターではこの問題をほんのちょっとしたテクニックを使うこと
によって回避しています。
その内容は、次回この続きとして詳しくお話することにします。




―――――――――――――――――――――――――――――――――――
編集後記
―――――――――――――――――――――――――――――――――――

最後までお読みいただきましてありがとうございます。

記念すべき第一回目の内容はいかがだったでしょうか?

ご存知の方もいらっしゃると思いますが、実は私このメルマガのほかにも初心
者向けのマクロ講座のメルマガをもうかれこれ3年前から発行しています。
http://www.wat3d.com/gogo/

そちらは既に6千人の読者を得ているものなんですが、このメルマガの方は、
内容から言うと上級者向けということになりますので、そんなに読者数が増え
るということはないだろう(!?)とは思いますが、できるだけ多くの方に読んで
もらい、その便利さや秘められた実力みたいなものを知ってもらって、少しで
もエクセルVBAの地位の向上というのを図っていきたいと思っています。

どうぞ皆さん、よろしくお願いします。

三太郎



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【エクセルVBA技術通信】 不定期発行
 このメールマガジンは『まぐまぐ!』 http://www.mag2.com/ を利用して
 発行しています。
 配信中止はこちら http://www.mag2.com/m/0000135169.htm
 発行者:WAT エクセルカスタマイズセンター
 発行者Webサイト: http://www.wat3d.com/ex/
 免責事項:本誌に掲載の情報のご利用により万一何らかの損害が発生した
 としても当社は一切責任を負いません。
 著作権:本誌の一部あるいは全部を無断で複製・複写・転載することを禁
 じます。 Copyright(C) 2007 WAT CO.,LTD. All Rights Reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
現在休刊中です
解除

規約に同意して

上へ戻る