<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>画面更新  |  独学エクセル塾</title>
	<atom:link href="https://dokugakuexcel.com/tag/%e7%94%bb%e9%9d%a2%e6%9b%b4%e6%96%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://dokugakuexcel.com</link>
	<description>初心者から中級者までシステム・関数・VBAを伝授します</description>
	<lastBuildDate>Mon, 17 Oct 2022 13:09:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://dokugakuexcel.com/wp-content/uploads/2021/06/cropped-cropped-image-66-1-32x32.jpg</url>
	<title>画面更新  |  独学エクセル塾</title>
	<link>https://dokugakuexcel.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">194648711</site>	<item>
		<title>【マクロVBA高速化①】画面更新・自動計算・イベントのOFFで高速化！3つのApplication</title>
		<link>https://dokugakuexcel.com/%e3%80%90vba%e7%9f%a5%e8%ad%98-%e9%ab%98%e9%80%9f%e5%8c%96%e2%91%a0%e3%80%91vba%e9%ab%98%e9%80%9f%e5%8c%96%e3%81%b8%e3%81%ae%e9%81%93%e3%83%bb%e9%ab%98%e9%80%9f3%e7%a8%ae%e3%81%ae%e7%a5%9e%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590vba%25e7%259f%25a5%25e8%25ad%2598-%25e9%25ab%2598%25e9%2580%259f%25e5%258c%2596%25e2%2591%25a0%25e3%2580%2591vba%25e9%25ab%2598%25e9%2580%259f%25e5%258c%2596%25e3%2581%25b8%25e3%2581%25ae%25e9%2581%2593%25e3%2583%25bb%25e9%25ab%2598%25e9%2580%259f3%25e7%25a8%25ae%25e3%2581%25ae%25e7%25a5%259e%25e5%2599%25a8</link>
					<comments>https://dokugakuexcel.com/%e3%80%90vba%e7%9f%a5%e8%ad%98-%e9%ab%98%e9%80%9f%e5%8c%96%e2%91%a0%e3%80%91vba%e9%ab%98%e9%80%9f%e5%8c%96%e3%81%b8%e3%81%ae%e9%81%93%e3%83%bb%e9%ab%98%e9%80%9f3%e7%a8%ae%e3%81%ae%e7%a5%9e%e5%99%a8/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Mon, 28 Jun 2021 12:46:58 +0000</pubDate>
				<category><![CDATA[高速化]]></category>
		<category><![CDATA[マクロVBA応用・便利技]]></category>
		<category><![CDATA[画面更新]]></category>
		<category><![CDATA[自動計算]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[OFF]]></category>
		<category><![CDATA[VBA高速化]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=300</guid>

					<description><![CDATA[今回はマクロ・VBAの高速化について説明します。皆さんは作成したマクロ・VBAの処理速度が遅くなったことはないでしょうか。 データ数やデータ容量が多ければ大きいほど処理速度は遅くなります。データが逐一入ってくるシステムだ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>今回はマクロ・VBAの高速化について説明します。<br>皆さんは作成したマクロ・VBAの処理速度が遅くなったことはないでしょうか。</p>



<p>データ数やデータ容量が多ければ大きいほど処理速度は遅くなります。<br>データが逐一入ってくるシステムだと追いつかないことも…</p>



<p>そこで高速化のスキルが必要になるのですが<br>様々な手法があるため数回に分けて説明します。</p>



<p>それでは見ていきましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">■時間がない人用コピーリスト</a></li><li><a href="#toc2" tabindex="0">■比較用プログラムの説明</a></li><li><a href="#toc3" tabindex="0">■画面更新のOFF</a></li><li><a href="#toc4" tabindex="0">■自動計算をオフ</a></li><li><a href="#toc5" tabindex="0">■イベントをオフ</a></li><li><a href="#toc6" tabindex="0">■変更前と比較</a></li><li><a href="#toc7" tabindex="0">&#x2b1b;︎公式の説明</a></li><li><a href="#toc8" tabindex="0">■まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">■時間がない人用コピーリスト</span></h2>



<p><strong><span class="fz-22px"><span class="marker-under">・使用方法</span></span></strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Application.ScreenUpdating = False &#8221;画面更新をOFF<br>Application.Calculation = xlManual &#8221;自動計算をOFF<br>Application.EnableEvents = False &#8221;イベントをOFF</p><p>&#8216;ここに高速化したいプログラム</p><p>Application.ScreenUpdating = True &#8221;画面更新をON<br>Application.Calculation = xlAutomatic &#8221;自動計算をON<br>Application.EnableEvents = True &#8221;イベントをON</p></blockquote>



<p></p>



<p>上記のように高速化したいプログラムに挟むように設置してください。</p>



<h2 class="wp-block-heading"><span id="toc2">■比較用プログラムの説明</span></h2>



<p>今回は下記のようなデータを用意しました。<br>A・B行に100000行、ランダムなデータがある状態です。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="475" height="322" src="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-136.png" alt="" class="wp-image-301" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-136.png 475w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-136-300x203.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-136-89x60.png 89w" sizes="(max-width: 475px) 100vw, 475px" /></figure>



<p>データの処理方法としてA1とB1の数値をかけてC1に出力する仕組みとします。<br>その処理を100000行繰り返すのにかかった時間を基準としましょう。</p>



<p>用意したプログラムがこちら。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="696" height="472" src="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-137.png" alt="" class="wp-image-302" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-137.png 696w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-137-300x203.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-137-88x60.png 88w" sizes="(max-width: 696px) 100vw, 696px" /></figure>



<p>一応、コピーできるように貼っておきます。</p>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub 高速化①()</p><p>Dim Time1 As Double, Time2 As Double, Result As Double<br>Dim A As Long</p><p>Time1 = Timer</p><p>&#8221;&#8221;計算開始<br>For A = 1 To 100000 Step 1</p><p>　Cells(A, 3) = Cells(A, 1) * Cells(A, 2)</p><p>Next A<br>&#8221;&#8221;計算終わり</p><p>Time2 = Timer</p><p>Result = Time2 &#8211; Time1<br>MsgBox Result &amp; &#8220;秒で処理しました&#8221;</p><p>End Sub</p></blockquote>



<p>では実行してみましょう。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="450" height="363" src="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-138.png" alt="" class="wp-image-303" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-138.png 450w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-138-300x242.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-138-74x60.png 74w" sizes="(max-width: 450px) 100vw, 450px" /></figure>



<p>3.62秒かかりましたね。これを基準に早くしていきます。</p>



<h2 class="wp-block-heading"><span id="toc3">■画面更新のOFF</span></h2>



<p>まず、画面更新についてです。<br>マクロ・VBAでは通常、進行に合わせて過程を画面で確認できるようになっています。<br>要は<br><strong><span class="marker-under">計算→画面出力→計算→画面出力<br>を100000回繰り返している</span></strong>流れです。</p>



<p>これを下記のコードでOFFにします。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><span class="fz-20px"><strong>Application.ScreenUpdating = False &#8221;画面更新をOFF</strong></span></p></blockquote>



<p>これにより<br><strong><span class="marker-under">計算*100000→画面出力</span></strong><br>のように画面出力が<span class="bold-red">1回</span>になります。</p>



<p>出力回数が減るので高速化につながる仕組みです。</p>



<h2 class="wp-block-heading"><span id="toc4">■自動計算をオフ</span></h2>



<p>次に自動計算についてです。<br>エクセルはセルを参照して計算していると元の数値を変えると参照先も変わりますよね。</p>



<p>こちらも<br><strong><span class="marker-under">入力→再計算→入力→再計算</span></strong><br>のように繰り返してしまいます。</p>



<p>なので実行中、セルの参照がない場合はOFFにしましょう。<br>下記のコードでOFFにします。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong><span class="fz-22px">Application.Calculation = xlManual &#8221;自動計算をオフ</span></strong></p></blockquote>



<p>これにより<br><strong><span class="marker-under">計算*100000→まとめて再計算</span></strong><br>のようになります。</p>



<h2 class="wp-block-heading"><span id="toc5">■イベントをオフ</span></h2>



<p>最後はイベントのオフです<br>ここで言われるイベントとはクリックや内容更新、セルのアクティブにより発生するイベントをOFFにするものです。</p>



<p>こちらは下記のコードでOFFにします。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Application.EnableEvents = False &#8221;イベントをOFF</strong></p></blockquote>



<h2 class="wp-block-heading"><span id="toc6">■変更前と比較</span></h2>



<p>では実際にプログラムに入れてみます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="728" height="564" src="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-139.png" alt="" class="wp-image-304" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-139.png 728w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-139-300x232.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-139-77x60.png 77w" sizes="(max-width: 728px) 100vw, 728px" /></figure>



<p>このようになりました。<br>またまたコピー用載せておきます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub 高速化①()</p><p>Application.ScreenUpdating = False &#8221;画面更新をOFF<br>Application.Calculation = xlManual &#8221;自動計算をOF<br>Application.EnableEvents = False &#8221;イベントをOFF</p><p>Dim Time1 As Double, Time2 As Double, Result As Double<br>Dim A As Long</p><p>Time1 = Timer</p><p>&#8221;&#8221;計算開始<br>For A = 1 To 100000 Step 1</p><p>　　Cells(A, 3) = Cells(A, 1) * Cells(A, 2)</p><p>Next A<br>&#8221;&#8221;計算終わり</p><p>Time2 = Timer</p><p>Result = Time2 &#8211; Time1<br>MsgBox Result &amp; &#8220;秒で処理しました&#8221;</p><p>Application.ScreenUpdating = True &#8221;画面更新をON<br>Application.Calculation = xlAutomatic &#8221;自動計算をON<br>Application.EnableEvents = True &#8221;イベントをON</p><p>End Sub　　</p></blockquote>



<p></p>



<p>ちなみにすべての処理が終わったらOFFにした項目はONに戻しましょう。</p>



<p><strong>Application.ScreenUpdating = True &#8221;画面更新をON<br>Application.Calculation = xlAutomatic &#8221;自動計算をON<br>Application.EnableEvents = True &#8221;イベントをON</strong></p>



<p></p>



<p>では実行してみましょう。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="539" height="348" src="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-140.png" alt="" class="wp-image-305" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/06/image-140.png 539w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-140-300x194.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/06/image-140-93x60.png 93w" sizes="(max-width: 539px) 100vw, 539px" /></figure>



<p>結果が出ました！</p>



<p><strong>3.62秒から2.20秒と1.42秒短縮しました。<br>結果的に39%短縮短縮です。</strong></p>



<p></p>



<h2 class="wp-block-heading"><span id="toc7">&#x2b1b;︎公式の説明</span></h2>



<p>わかりやすいように説明したため公式と使用する語句が異なりますが<br>マイクロソフト公式の説明については下記のリンクを参照してください。☟</p>



<p><a href="https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.screenupdating">Application.ScreenUpdating プロパティ (Excel) | Microsoft Learn</a></p>



<p><a href="https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.calculation">Application.Calculation プロパティ (Excel) | Microsoft Learn</a></p>



<p><a href="https://learn.microsoft.com/ja-jp/office/vba/api/Excel.Application.EnableEvents">Application.EnableEvents プロパティ (Excel) | Microsoft Learn</a></p>



<h2 class="wp-block-heading"><span id="toc8">■まとめ</span></h2>



<p>いかがだったでしょうか。<br>私も大容量の処理には必ず入れているテンプレートです。</p>



<p>ぜひ高速化に役立ててみてください。</p>



<p></p>



<p>次回の高速化の記事はこちらから☟</p>



<p><a href="https://dokugakuexcel.com/%e3%80%90vba%e7%9f%a5%e8%ad%98-%e9%ab%98%e9%80%9f%e5%8c%96%e2%91%a1%e3%80%91%e3%81%82%e3%81%be%e3%82%8a%e7%9f%a5%e3%82%89%e3%82%8c%e3%81%a6%e3%81%84%e3%81%aa%e3%81%84%ef%bc%9f%e5%a4%a7%e9%87%8f/">【VBA知識 高速化②】あまり知られていない？大量データで処理が遅いVBAを高速化 &#8211; 独学エクセル塾 (dokugakuexcel.com)</a></p>



<p></p>



<p>それでは次回の記事でお会いしましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dokugakuexcel.com/%e3%80%90vba%e7%9f%a5%e8%ad%98-%e9%ab%98%e9%80%9f%e5%8c%96%e2%91%a0%e3%80%91vba%e9%ab%98%e9%80%9f%e5%8c%96%e3%81%b8%e3%81%ae%e9%81%93%e3%83%bb%e9%ab%98%e9%80%9f3%e7%a8%ae%e3%81%ae%e7%a5%9e%e5%99%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">300</post-id>	</item>
	</channel>
</rss>
