<?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>VBA アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/tag/vba/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/tag/vba/</link>
	<description>ちょっとしたことを調べているよ</description>
	<lastBuildDate>Sun, 17 Jul 2022 15:23:14 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>VBA アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/tag/vba/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【Excel VBA】初心者でも簡単にマクロを作る方法</title>
		<link>https://nyanblog2222.com/office/4621/</link>
					<comments>https://nyanblog2222.com/office/4621/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 10 Jul 2022 02:49:57 +0000</pubDate>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4621</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/54.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/54.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />今回は、OfficeのExcel VBAで初心者でも簡単にマクロを作成する方法を紹介します。 もちろんプログラミング要素が０とは言いませんが、ほとんど知識なしでもできてしまう方法ですので、良かったらご参考にしてくださいね [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4621/">【Excel VBA】初心者でも簡単にマクロを作る方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/54.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/54.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回は、OfficeのExcel VBAで<span class="marker-under">初心者でも簡単に</span>マクロを作成する方法を紹介します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-2 sbs-stn sbp-r sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/themes/cocoon-master/images/woman.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Excelのマクロ（VBA）を使ったことがないし、当然プログラミングもしたことがない……<br>かといって１から勉強を始めるのもハードルが高いなぁ</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>「マクロの記録」機能で作成したコードを利用すれば、初心者でも簡単にマクロを作成できますよ♪</p>
</div></div>



<p>もちろんプログラミング要素が０とは言いませんが、<br><span class="marker-under">ほとんど知識なしでもできてしまう</span>方法ですので、良かったらご参考にしてくださいね。</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">元となるExcelを作成</a></li><li><a href="#toc2" tabindex="0">Excelをマクロ形式にする＆開発タブを追加する</a></li><li><a href="#toc3" tabindex="0">「マクロの記録」機能でベースコードを作成</a></li><li><a href="#toc4" tabindex="0">コードを適宜修正</a></li><li><a href="#toc5" tabindex="0">（必要であれば）マクロ実行のためのボタン等を作成する</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">元となるExcelを作成</span></h2>



<p>まずはマクロを付与する元となるExcelを作成しましょう。</p>



<p>例えば、<span class="marker-under">「健康診断の日程」を社員の人数分印刷するケース</span>です。</p>



<p>以下のように、<br>まずVLOOKUP関数を利用して「印刷No」を変更するだけで内容を変えられるようにします。<br>（VLOOKUP関数の使い方については以下を参照してください♪）</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/office/4673/" title="【EXCEL】VLOOKUPの使い方（1と0の違い、#N/Aエラー等）" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/55-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/55-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/55-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/55-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/55-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【EXCEL】VLOOKUPの使い方（1と0の違い、#N/Aエラー等）</div><div class="blogcard-snippet internal-blogcard-snippet">ExcelのVLOOKUP関数について、基本的な使い方として第4引数が「0/FALSE（完全一致）」の場合や「1/TRUE（近似値）」の場合、「#N/A」エラーのIFERROR関数を使った対処方法、使用時の注意事項などサンプルを交えて紹介します♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.07.18</div></div></div></div></a>
</div></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="482" src="https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b.png" alt="" class="wp-image-4624" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b-300x181.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b-768x463.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="482" src="https://nyanblog2222.com/wp-content/uploads/2022/07/3b54d6136af5b8c5ec451659008bb006.png" alt="" class="wp-image-4625" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/3b54d6136af5b8c5ec451659008bb006.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/3b54d6136af5b8c5ec451659008bb006-300x181.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/3b54d6136af5b8c5ec451659008bb006-768x463.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>さて、ここで一つ一つ「印刷No」に値を入れて印刷するを繰り返すのも面倒なので、<br><span class="marker-under">From～ToのNoの人へ一括して通知文を印刷したい！</span>とします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="482" src="https://nyanblog2222.com/wp-content/uploads/2022/07/f2d755ca5afeec10b4cae835d1bfc842.png" alt="" class="wp-image-4632" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/f2d755ca5afeec10b4cae835d1bfc842.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/f2d755ca5afeec10b4cae835d1bfc842-300x181.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/f2d755ca5afeec10b4cae835d1bfc842-768x463.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>ここで登場するのが<span class="marker-under">処理を自動化させるマクロ</span>です。次項から作成方法を説明していきます。</p>



<h2 class="wp-block-heading"><span id="toc2">Excelをマクロ形式にする＆開発タブを追加する</span></h2>



<p>前準備としてExcelをマクロ形式にしましょう。</p>



<p>名前を付けて保存する際に、「Excelマクロ有効ブック」を選択して保存します。<br>こうすることで、ファイルの拡張子が「<span class="marker-under">.xlsm</span>」となり、マクロを保存できるようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="531" src="https://nyanblog2222.com/wp-content/uploads/2022/07/d7eee8a115ec61a02ba55877f0190392-1.png" alt="" class="wp-image-4631" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/d7eee8a115ec61a02ba55877f0190392-1.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/d7eee8a115ec61a02ba55877f0190392-1-300x199.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/d7eee8a115ec61a02ba55877f0190392-1-768x510.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>次に、もしExcel上部に「開発タブ」が出ていなければ設定してあげましょう。<br><span class="marker-under">「開発タブ」からマクロの設定ができます</span>。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="185" src="https://nyanblog2222.com/wp-content/uploads/2022/07/eaa8a498444c6a26b01ab47fb7d4101f-1024x185.png" alt="" class="wp-image-4628" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/eaa8a498444c6a26b01ab47fb7d4101f-1024x185.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/07/eaa8a498444c6a26b01ab47fb7d4101f-300x54.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/eaa8a498444c6a26b01ab47fb7d4101f-768x139.png 768w, https://nyanblog2222.com/wp-content/uploads/2022/07/eaa8a498444c6a26b01ab47fb7d4101f.png 800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="208" height="560" src="https://nyanblog2222.com/wp-content/uploads/2022/07/9cb32e5a5f0690e63034fc6137faa214.png" alt="" class="wp-image-4626" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/9cb32e5a5f0690e63034fc6137faa214.png 208w, https://nyanblog2222.com/wp-content/uploads/2022/07/9cb32e5a5f0690e63034fc6137faa214-111x300.png 111w" sizes="auto, (max-width: 208px) 100vw, 208px" /></figure>



<p>「開発」にチェックを入れるとタブが現れます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="742" src="https://nyanblog2222.com/wp-content/uploads/2022/07/3bec5d9f8c1b2bf38df5f52d97116d7d-1024x742.png" alt="" class="wp-image-4627" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/3bec5d9f8c1b2bf38df5f52d97116d7d-1024x742.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/07/3bec5d9f8c1b2bf38df5f52d97116d7d-300x217.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/3bec5d9f8c1b2bf38df5f52d97116d7d-768x557.png 768w, https://nyanblog2222.com/wp-content/uploads/2022/07/3bec5d9f8c1b2bf38df5f52d97116d7d.png 800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading"><span id="toc3">「マクロの記録」機能でベースコードを作成</span></h2>



<p>前項までで事前準備もできたため、早速マクロを作成していきましょう。</p>



<p>ただ、いきなりVBAのコードエディタを開き、１からコードを作成……、<br>なんてことをしてしまうと一気に難易度が高くなってしまうため、<br>今回はマクロの元となるベースコードを作成するため、Excelの「マクロの記録」という機能を使用します。</p>



<p><span class="marker-under">「マクロの記録」とは、その名の通りExcelの操作を記録する機能です。</span></p>



<p>やり方は以下の通り、まず「マクロの記録」をクリックします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="677" height="256" src="https://nyanblog2222.com/wp-content/uploads/2022/07/a09f36ed0fea6b266dc36f4a11b2e21b.png" alt="" class="wp-image-4633" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/a09f36ed0fea6b266dc36f4a11b2e21b.png 677w, https://nyanblog2222.com/wp-content/uploads/2022/07/a09f36ed0fea6b266dc36f4a11b2e21b-300x113.png 300w" sizes="auto, (max-width: 677px) 100vw, 677px" /></figure>



<p>適当にマクロ名を付けて保存します。<br>（プログラミング言語はアルファベットが基本なので、アルファベットで「動詞＋名詞」のような処理内容がわかる名前がおすすめです）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="410" height="327" src="https://nyanblog2222.com/wp-content/uploads/2022/07/6ea49a6f4dd34c5e7aab10021536e5f3.png" alt="" class="wp-image-4635" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/6ea49a6f4dd34c5e7aab10021536e5f3.png 410w, https://nyanblog2222.com/wp-content/uploads/2022/07/6ea49a6f4dd34c5e7aab10021536e5f3-300x239.png 300w" sizes="auto, (max-width: 410px) 100vw, 410px" /></figure>



<p>「OK」を押すと記録が始まるので、記録したい処理を手作業で行います。</p>



<p>今回のケースだと、以下を記録してみましょう。<br><span class="marker-under">１．G2の値を変える<br>２．印刷する</span></p>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="482" src="https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b.png" alt="" class="wp-image-4624" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b-300x181.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/69e322f1d4cf1591233b4a2ac148bf4b-768x463.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>終わったら、記録終了します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="646" height="201" src="https://nyanblog2222.com/wp-content/uploads/2022/07/a35b6070bcceb2e6013ebb75771b809a.png" alt="" class="wp-image-4636" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/a35b6070bcceb2e6013ebb75771b809a.png 646w, https://nyanblog2222.com/wp-content/uploads/2022/07/a35b6070bcceb2e6013ebb75771b809a-300x93.png 300w" sizes="auto, (max-width: 646px) 100vw, 646px" /></figure>



<p>これで記録できました！<br>マクロボタンをおして、編集を押すと……。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="677" height="256" src="https://nyanblog2222.com/wp-content/uploads/2022/07/35ace0c09ad7e6536ab63259734abcce.png" alt="" class="wp-image-4637" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/35ace0c09ad7e6536ab63259734abcce.png 677w, https://nyanblog2222.com/wp-content/uploads/2022/07/35ace0c09ad7e6536ab63259734abcce-300x113.png 300w" sizes="auto, (max-width: 677px) 100vw, 677px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="520" height="415" src="https://nyanblog2222.com/wp-content/uploads/2022/07/9c305a14ef71c3e6d2b4fc055a291933.png" alt="" class="wp-image-4638" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/9c305a14ef71c3e6d2b4fc055a291933.png 520w, https://nyanblog2222.com/wp-content/uploads/2022/07/9c305a14ef71c3e6d2b4fc055a291933-300x239.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></figure>



<p>このように、マクロのベースとなるコードができましたね♪</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="308" src="https://nyanblog2222.com/wp-content/uploads/2022/07/648a3305233876d3267a00b01c1642a0-1.png" alt="" class="wp-image-4634" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/648a3305233876d3267a00b01c1642a0-1.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/648a3305233876d3267a00b01c1642a0-1-300x116.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/648a3305233876d3267a00b01c1642a0-1-768x296.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>コードを見て、<br><span class="bold-red">・G2を選ぶ<br>・値（2）を入れる<br>・エンターを押したためG3が選ばれる<br>・印刷する</span></p>



<p>という処理内容になっていることがなんとなく分かれば、マクロ作成は難しくありません！<br>分からなくても、いくつかやっているとなんとなく分かってきますのでご安心を。</p>



<p>また、もし、<span class="marker-under">同じ作業をするだけなら次項のコードの修正は不要</span>なので飛ばしてくださいね♪</p>



<h2 class="wp-block-heading"><span id="toc4">コードを適宜修正</span></h2>



<p>前項にてベースコードができましたので、以下のとおり適宜修正していきます。</p>



<p>・G2を選ぶ　→　<span class="marker-under">必要</span><br>・値（2）を入れる　→　<span class="marker-under">値にFromToの内容を反映させれるようにする</span><br>・エンターを押したためG3が選ばれる　→　<span class="marker-under-red">G3を選ぶ必要はないため不要</span><br>・印刷する　→　<span class="marker-under">必要</span><br><span class="marker-under"><span class="bold-red">◎上記をFromToの間だけ繰り返す！</span></span></p>



<p>ここでややこしいプログラミングの知識は一つだけで、<span class="marker-under">「繰り返す」</span>ということです。</p>



<p>繰り返すには<span class="marker-under">「For～Next」</span>というコードを使います。<br>このコードは、マクロを作るうえではとても重要なもので、<br>逆にこれだけ覚えていたら、簡易なマクロであればなんとなくの雰囲気だけで作れちゃったりします。</p>



<pre class="wp-block-code basic"><code>For start To end
     処理
Next</code></pre>



<p>上記の通りstartからendまで、処理を繰り返します。<br>startの値は一度繰り返すごとに1ずつ増えていき、startの値は処理内で使用することができます。</p>



<p>では、実際に作ってみたコードがこちらです。</p>



<pre class="wp-block-code basic"><code>Sub PrintFromTo()
　→　マクロ名（関数）
'
' PrintFromTo Macro
'
    Range("G2").Select　→　G2を選ぶ
    
    For i = Range("G5").Value To Range("H5").Value
　　→　iという変数（入れ物）に入れたG5の値からH5の値まで繰り返す
        ActiveCell.FormulaR1C1 = i　→　選んだG2へiの値を入れる
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False　→　印刷する
    Next　→　iの値を1プラスしてForに戻る

End Sub　→　マクロを終了する
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="322" src="https://nyanblog2222.com/wp-content/uploads/2022/07/51dc45b84de97685dbfb9176035b2bbd-1.png" alt="" class="wp-image-4640" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/51dc45b84de97685dbfb9176035b2bbd-1.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/51dc45b84de97685dbfb9176035b2bbd-1-300x121.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/51dc45b84de97685dbfb9176035b2bbd-1-768x309.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>これでコーディングは終了です。初めてでもなんとなく理解できたら幸いです。</p>



<p>できたらコードエディタを右上の×で閉じて、マクロを実行してみましょう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="520" height="415" src="https://nyanblog2222.com/wp-content/uploads/2022/07/814b1d1afbc47066017eec59861efe1a.png" alt="" class="wp-image-4644" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/814b1d1afbc47066017eec59861efe1a.png 520w, https://nyanblog2222.com/wp-content/uploads/2022/07/814b1d1afbc47066017eec59861efe1a-300x239.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></figure>



<p>想定通り、繰り返し印刷できていたら成功です！</p>



<h2 class="wp-block-heading"><span id="toc5">（必要であれば）マクロ実行のためのボタン等を作成する</span></h2>



<p>前項のとおりマクロができましたが、毎回マクロの画面を開いて実行と押すのも非効率なので、<br>必要であればボタン等装飾してみるのもおすすめです。</p>



<p>今回は、<span class="marker-under">ボタンを押すと設定したマクロが実行</span><span class="marker-under">できる</span>ようにしてみましょう。</p>



<p>まず、図形から丸みを帯びた四角のボタンを作成します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="497" height="261" src="https://nyanblog2222.com/wp-content/uploads/2022/07/bd4d3e7e9141968ca22596f44e41e27f.png" alt="" class="wp-image-4641" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/bd4d3e7e9141968ca22596f44e41e27f.png 497w, https://nyanblog2222.com/wp-content/uploads/2022/07/bd4d3e7e9141968ca22596f44e41e27f-300x158.png 300w" sizes="auto, (max-width: 497px) 100vw, 497px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="448" src="https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2.png" alt="" class="wp-image-4642" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2.png 800w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-300x168.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-768x430.png 768w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/07/eea1bf3b61aabeee12caf59721aabfb2-376x212.png 376w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>次にボタンを右クリックし、「マクロの登録」を押すと、<br>以下のように登録画面が出てきますので、作成したマクロを選択しましょう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="516" height="415" src="https://nyanblog2222.com/wp-content/uploads/2022/07/77698daa3bb73a776966e35694b4ab42.png" alt="" class="wp-image-4643" srcset="https://nyanblog2222.com/wp-content/uploads/2022/07/77698daa3bb73a776966e35694b4ab42.png 516w, https://nyanblog2222.com/wp-content/uploads/2022/07/77698daa3bb73a776966e35694b4ab42-300x241.png 300w" sizes="auto, (max-width: 516px) 100vw, 516px" /></figure>



<p>これで<span class="marker-under">マクロボタンの作成についても完了</span>です。</p>



<p>どうでしょう、わりと簡単だったなと思っていただけると嬉しいです。<br>少し難しいと思っても数回やってみると、<br>「ふ～ん、こんな感じか」と慣れてくると思いますので、是非チャレンジしてみてくださいね！</p>



<p>以上です。<br>今回の記事が何かの参考になれば幸いです。ありがとうございました♪</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4621/">【Excel VBA】初心者でも簡単にマクロを作る方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/4621/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【VBA】If文を一行で記述する方法【Access,Excel】</title>
		<link>https://nyanblog2222.com/office/4329/</link>
					<comments>https://nyanblog2222.com/office/4329/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 11 Dec 2021 14:25:03 +0000</pubDate>
				<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[If]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4329</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/48.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/48.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はOfficeのVBAで、If文を一行で記述する方法を紹介します。 目次 If文を一行で記述する方法そもそも、一行で書いた方が良い？ If文を一行で記述する方法 If文は通常、以下のように記述します。 これを一行で書 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4329/">【VBA】If文を一行で記述する方法【Access,Excel】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/48.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/48.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/48-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回は<span class="marker-under">OfficeのVBAで、If文を一行で記述する方法</span>を紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">If文を一行で記述する方法</a></li><li><a href="#toc2" tabindex="0">そもそも、一行で書いた方が良い？</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">If文を一行で記述する方法</span></h2>



<p>If文は通常、以下のように記述します。</p>



<pre class="wp-block-code basic"><code>If ( 条件式 ) Then
    処理
End If</code></pre>



<p>これを一行で書くと、以下のようなコードになります。<br>※<span class="marker-under">「End If」を記述しないことで、実現できます</span></p>



<pre class="wp-block-code basic"><code>If ( 条件式 ) Then 処理</code></pre>



<p>Else有りでも一行で書けます。</p>



<pre class="wp-block-code basic"><code>If ( 条件式 ) Then 処理１ Else 処理２</code></pre>



<p>ElseIfを使う場合は一行では書けないようです。</p>



<h2 class="wp-block-heading"><span id="toc2">そもそも、一行で書いた方が良い？</span></h2>



<p>If分を一行で書くと見た目がすっきりして、あたかも「かしこいコード」に見えますが、<br>必ずしも万人にとって読みやすいと思う記述方法ではないと私は思います。</p>



<p><span class="marker-under">コードは、自分にも他人にも読みやすいものであるべきです。</span></p>



<p>なので、<br>一行で書くと読みやすいコードになると思うのであれば、一行で書いた方が良いし、<br>一行で書くと”もしかしたら”読みにくいコードになるかもしれないと思うのであれば、分けて書いた方が良いと思います。</p>



<p>例えば、こういったケースはどちらが読みやすいでしょうか。<br></p>



<p><span class="bold-red">例）ある関数内で、対象フラグが9（エラーフラグ）なら即リターンする</span></p>



<p>①</p>



<pre class="wp-block-code basic"><code>If (TargetFlg = 9) Then Exit Function</code></pre>



<p>②</p>



<pre class="wp-block-code basic"><code>If (TargetFlg = 9)
  Then Exit Function
End If</code></pre>



<p><span class="marker-under">私なら①の方がスコープが狭まるので読みやすい</span>です。<br>内容も複雑ではないので、すぐに理解できます。<br>ただ②も素直なので、どちらを読みやすいと思うかは人によるかもしれませんね。</p>



<p><span class="bold-red">例）取得した日付が10文字（YYYY/MM/DD）ならそのまま返し、<br>　　異なれば（YYYYMMDD）、 10文字（YYYY/MM/DD） にして返す関数</span></p>



<p>①</p>



<pre class="wp-block-code basic"><code>If (Len(TargetDay) = 10) Then DayFormat = TargetDay Else DayFormat = Left(TargetDay, 4) &amp; "/" &amp; Mid(TargetDay, 5, 2) &amp; "/" &amp; Right(TargetDay, 2)</code></pre>



<p>②</p>



<pre class="wp-block-code basic"><code>If (Len(TargetDay) = 10) Then
  DayFormat = TargetDay
Else
  DayFormat = Left(TargetDay, 4) &amp; "/" &amp; Mid(TargetDay, 5, 2) &amp; "/" &amp; Right(TargetDay, 2)
End If
</code></pre>



<p><span class="marker-under">私なら②の方が素直で読みやすいです。</span><br>①は一行にすると読みづらすぎます！<br>恐らく他の人からしても②の方が読みやすいのではないでしょうか。<br>Elseを使う時点で分けた方がいいかもしれませんね。</p>



<p>ということで、判断に迷ったら<br>「一行で書くことで、自分や他人にとって読みやすくなるか」を考えて記述すると良いと思います。</p>



<p>以上です。<br>今回の記事が何かの参考になれば幸いです。ありがとうございました♪</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4329/">【VBA】If文を一行で記述する方法【Access,Excel】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/4329/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Access】Dcount「クエリ パラメーターとして指定した式でエラー &#8216;xxx&#8217; が発生しました。」対処方法</title>
		<link>https://nyanblog2222.com/office/4300/</link>
					<comments>https://nyanblog2222.com/office/4300/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 23 Nov 2021 13:34:57 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Dcount]]></category>
		<category><![CDATA[エラー]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4300</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/46.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/46.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はAccessVBAでDcount関数を使用したときに、 「実行時エラー &#8216;2471&#8217;: クエリ パラメーターとして指定した式でエラー &#8216;xxx&#8217; が発生しました。」  [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4300/">【Access】Dcount「クエリ パラメーターとして指定した式でエラー &#8216;xxx&#8217; が発生しました。」対処方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/46.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/46.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/46-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p> 今回はAccessVBAでDcount関数を使用したときに、 <br><span class="marker-under-red"><span class="marker-under-red">「実行時エラー &#8216;2471&#8217;: クエリ パラメーターとして指定した式でエラー<span class="marker-under-red"> &#8216;xxx&#8217; が発生しました。</span>」</span></span> とエラーコードがでてしまった場合の対処方法を紹介します。 </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="488" height="236" src="https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301.png" alt="" class="wp-image-4308" srcset="https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301.png 488w, https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301-300x145.png 300w" sizes="auto, (max-width: 488px) 100vw, 488px" /></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">DCount関数の使い方</a></li><li><a href="#toc2" tabindex="0">エラーの原因は？どんな状況で発生する？</a></li><li><a href="#toc3" tabindex="0">対処方法</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">DCount関数の使い方</span></h2>



<p>対処方法を紹介する前に、簡単に使い方を紹介します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p id="block-17ea28f9-618d-416b-9b70-0ecef29269f3"><span class="bold-red">DCount ( expr , domain [, criteria] )</span></p>



<p id="block-e7817aa2-83b0-4993-a141-dc49e5a3c1ee">・expr：必須。 レコード数をカウントするフィールド。「*」可<br>　　　　（テーブル内のフィールド、フォームのコントロール、定数、関数）<br>・domain：必須。テーブル名やクエリ名<br>・criteria：省略可能。 DCount関数が実行されるデータの範囲を制限するために使用される文字列式。</p>



<p><a href="https://support.microsoft.com/ja-jp/office/dcount-%E9%96%A2%E6%95%B0-f6b5d78b-ad0b-4e42-be7a-11a64acbf3d3">（Microsoft Doc：DCount 関数より）</a></p>
</div>



<p>Dcount関数は、<br>テーブル等（domain）のフィールド（expr）で値があるレコード、かつ条件（criteria）に合致するレコード数を取得します。</p>



<p>例えば、以下の「社員情報」テーブルで「氏名」フィールドをカウントし、<br>11000以上の社員NOを取得するときは、このように指定します。</p>



<p>・社員情報</p>



<figure class="wp-block-table"><table><thead><tr><th>社員NO</th><th>氏名</th></tr></thead><tbody><tr><td>10001</td><td>山田</td></tr><tr><td>15000</td><td>今村</td></tr><tr><td></td><td>花輪</td></tr><tr><td>14720</td><td></td></tr><tr><td>93745</td><td>船井</td></tr></tbody></table></figure>



<p>・コード</p>



<pre class="wp-block-code plaintext"><code>Sub DCount_OK()

    Dim Tmp As Long
    
    Tmp = DCount("氏名", "社員情報", "社員NO &gt; 11000")
    
    Debug.Print Tmp

End Sub</code></pre>



<p>結果は「2」です。</p>



<p>ここで、例では各要素がダブルコーテーション（&#8221;）でくくられていることがわかると思いますが、<br><span class="marker-under">Dcount関数を記述する際に一癖あるのが、各要素が文字列であることです。</span></p>



<h2 class="wp-block-heading"><span id="toc2">エラーの原因は？どんな状況で発生する？</span></h2>



<p>私の場合、<span class="marker-under">変数を使って条件を可変にしようとした際にエラー</span>がでました。</p>



<p>前述のDcount関数の使い方にも記述しましたが、<br>Dcount関数は各要素に文字列を入れる必要があります。</p>



<p>そこで、条件の文字列の中に変数名を入れてしまうと、<br>「’変数名’という値と比較できないよ！」とエラーが出てしまいます。<br>なんとなく、「&#8221;A &gt; 999&#8243;」という書き方ができるため、変数でもいけるのでは？と思ったのが間違いでした。</p>



<p>・コード（誤った例）</p>



<pre class="wp-block-code"><code>Sub DCount_Err()

    Dim Tmp As Long
    
    Dim TestErr As Long
    TestErr = 11000
    
    Tmp = DCount("氏名", "社員情報", "社員NO &gt; TestErr")
    
    Debug.Print Tmp

End Sub</code></pre>



<p>・エラーメッセージ</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="488" height="236" src="https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301.png" alt="" class="wp-image-4308" srcset="https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301.png 488w, https://nyanblog2222.com/wp-content/uploads/2021/11/2021112301-300x145.png 300w" sizes="auto, (max-width: 488px) 100vw, 488px" /></figure>



<h2 class="wp-block-heading"><span id="toc3">対処方法</span></h2>



<p>対処方法ですが、<br>以下のように<span class="marker-under">変数部分を文字列と「＆」で結合させる</span>と正しく出力されます。</p>



<pre class="wp-block-code"><code>Sub DCount_Err()

    Dim Tmp As Long
    
    Dim TestErr As Long
    TestErr = 11000
    
    Tmp = DCount("氏名", "社員情報", "社員NO &gt; " &amp; TestErr)
    
    Debug.Print Tmp

End Sub
</code></pre>



<p>これで、繰り返し処理などで可変の値が入っても対応することができます。</p>
<p>投稿 <a href="https://nyanblog2222.com/office/4300/">【Access】Dcount「クエリ パラメーターとして指定した式でエラー &#8216;xxx&#8217; が発生しました。」対処方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/4300/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【対処方法】このプロジェクトのコードは、64ビットシステムで&#8230;【Declare,PrtSafe】</title>
		<link>https://nyanblog2222.com/programming/vba/2666/</link>
					<comments>https://nyanblog2222.com/programming/vba/2666/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 19 Dec 2020 23:54:42 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[エラー]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2666</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/38.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/38.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はパソコンの入れ替え後等にVBAマクロ付きのExcelやAccessファイルを使用した際、 「このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。 Declareステートメントの確認 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/vba/2666/">【対処方法】このプロジェクトのコードは、64ビットシステムで&#8230;【Declare,PrtSafe】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/38.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/38.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/38-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><p>今回はパソコンの入れ替え後等にVBAマクロ付きのExcelやAccessファイルを使用した際、<br>
<span class="marker-under-red">「このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。<br>
Declareステートメントの確認および更新を行い、<br>
次にDeclareステートメントにPrtSafe 属性を設定してください。」</span><br>
とエラーコードがでてしまった場合の対処方法を紹介します。</p>
<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/11/2020-11-29-min.png" alt="エラー" width="407" height="182" class="alignnone size-full wp-image-2667" srcset="https://nyanblog2222.com/wp-content/uploads/2020/11/2020-11-29-min.png 407w, https://nyanblog2222.com/wp-content/uploads/2020/11/2020-11-29-min-300x134.png 300w" sizes="auto, (max-width: 407px) 100vw, 407px" /></p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</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">コード変更例</a><ol><li><a href="#toc4" tabindex="0">Declare文の変更</a></li><li><a href="#toc5" tabindex="0">API実行箇所をDeclare文の型に合わせる（引数・戻り値）</a></li><li><a href="#toc6" tabindex="0">補足：PtrSafeやPtrLong型について</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">エラーの原因は？どんな状況で発生する？</span></h2>
<p><span class="marker-under">Office64bitで、<br>
Win32API（32bitのWindows API）を呼び出す</span>と該当のエラーメッセージがでます。<br>
64bitと32bitでは使用できる領域が異なるため、<br>
通常そのまま使うと何かしら問題が発生する場合があります。<br>
よって「使っても良いか」確認の意味も込めたエラーメッセージとなります。</p>
<p>例えば、<span class="marker-under">パソコンの入れ替えやOfficeのバージョンアップで、<br>
Officeが32bitから64bitに変わった際</span>に発生します。</p>
<h2><span id="toc2">対処方法</span></h2>
<p>対処方法は以下になります。</p>
<ul>
<li><strong class="brown_color">Declare文の変更</strong>（※１）<br>
①PtrSafeを追加<br>
②Long型を適宜PtrLong型に変更</li>
<li><strong class="brown_color">API実行箇所をDeclare文の型に合わせる（引数・戻り値）&nbsp;</strong></li>
</ul>
<p><span class="marker-under">※１　Office64bitでのDeclare文の記述方法は、<br>
以下のとおりMicrosoft公式より公開されていますので、 コピーして使用します。</span></p>
<p><a class="link" href="https://docs.microsoft.com/ja-jp/office/troubleshoot/office-suite-issues/win32api_ptrsafe-with-64-bit-support">Microsoft Docs：Win32API_PtrSafe</a>　より、<br>
「<a class="link" href="https://www.microsoft.com/en-us/download/details.aspx?id=9970">Office 2010 ヘルプファイル:64 ビットのサポートが含まれる Win32API_PtrSafe</a>」<br>
へのリンクにとび、<br>
<span>「Office2010Win32API_PtrSafe.exe」をダウンロード・インストール。<br>
</span>インストールすると、<br>
「C:\Office 2010 Developer Resources\Documents\Office2010Win32API_PtrSafe」 に、<br>
Win32API_PtrSafe.TXTが出来上がるので、こちらを開き、該当箇所をコピペする。</p>
<p>なお、Office2010より64bitが新しくできたためOffice2010となっていますが、<br>
他バージョンでも同じように上記のURLからダウンロードします。</p>
<h2><span id="toc3">コード変更例</span></h2>
<p>例えば、以下のようなコードを記述しているとして、どのように修正するか説明します。<br>
コード内容としては、<span class="marker-under">”user32”というWin32APIを使用</span>し、<br>
「<span class="marker-under">アクティブウィンドウの名前を取得して、出力する</span>」という単純なものです。</p>


<pre class="wp-block-code"><code>Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Sub GetWindowName()

'アクティブウインドウのハンドル取得
Dim lWindowHwnd As Long
lWindowHwnd = GetActiveWindow()

'バッファを確保
Dim sWindowName As String
sWindowName = String(256, Chr(0))

'アクティブウインドウのウインドウ名取得
Dim lWindowNameLen As Long
lWindowNameLen = GetWindowText(lWindowHwnd, sWindowName, Len(sWindowName))

'イミディエイトに出力
Debug.Print "現在アクテイブウインドウのタイトル名は"
Debug.Print sWindowName
Debug.Print "長さは" + Str(lWindowNameLen) + "です"

End Sub</code></pre>


<p>もちろん、Office32bitではエラーメッセージなしで正常に動きます。</p>
<h3><span id="toc4">Declare文の変更</span></h3>
<p>まず、<span class="marker-under">Win32API_PtrSafe.TXT</span>を開いて該当の箇所<br>
「GetActiveWindow」「GetWindowTextA」などで検索し、コピペします。</p>


<pre class="wp-block-code"><code>Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As Long) As Long</code></pre>


<p>Declare文の変更はたったこれだけです♪<br><span class="marker-under-red">注意点は、必ず「Win32API_PtrSafe.TXT」を見てコピペする</span>ことです。<br>バグの元なので全てのLong型をPtrLong型にしないようにしてください。</p>
<h3><span id="toc5">API実行箇所をDeclare文の型に合わせる（引数・戻り値）</span></h3>
<p>次に<span class="marker-under">API実行箇所については、Declare文と睨めっこしながら変更</span>していきます。<br>今回の場合、GetActiveWindowの戻り値の型であり、<br>GetWindowTextの第一引数であるlWindowHwndを <span class="marker-under">Long型からLongPtr型</span>に変えます。<br>命名規則にもよりますが、変数名のルールで型名も考慮しているのであればそちらも変更します。<br>（<span class="marker-under"> lWindowHwndからlpWindowHwnd</span>）</p>


<pre class="wp-block-code"><code>Private Sub GetWindowName()

'アクティブウインドウのハンドル取得
Dim lpWindowHwndAs LongPtr
lpWindowHwnd = GetActiveWindow()

'バッファを確保
Dim sWindowName As String
sWindowName = String(256, Chr(0))

'アクティブウインドウのウインドウ名取得
Dim lWindowNameLen As Long
lWindowNameLen = GetWindowText(lpWindowHwnd, sWindowName, Len(sWindowName))

'イミディエイトに出力
Debug.Print "現在アクテイブウインドウのタイトル名は"
Debug.Print sWindowName
Debug.Print "長さは" + Str(lWindowNameLen) + "です"

End Sub</code></pre>


<p>他にも元からLong型のものがありますが、Declare文でもLong型なので変更しません。</p>
<p>以上で、VBAのOffice64bit対応は完了です。</p>
<h3><span id="toc6">補足：PtrSafeやPtrLong型について</span></h3>
<p>簡単に紹介すると以下になります。</p>
<ul>
<li><strong class="brown_color">PtrSafe<br />Office64bitで実行しても安全であると明示するキーワード</strong></li>
<li style="list-style-type: none;"> </li>
</ul>
<ul>
<li><strong class="brown_color">PtrLong型</strong><br />Office32bitではLong型に、Office64bitではLongLong形になる型</li>
</ul>
<p>このことから、<br /><span class="marker-under">Office64bitで使えるようにコードを書き換えても、 Office32bitで動くよう</span>になっています。</p><p>投稿 <a href="https://nyanblog2222.com/programming/vba/2666/">【対処方法】このプロジェクトのコードは、64ビットシステムで&#8230;【Declare,PrtSafe】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/vba/2666/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【VBA】Shift-JIS・UTF-8等、各種文字コードのファイル読み込み【コピペで使えるサンプル付き】</title>
		<link>https://nyanblog2222.com/programming/2291/</link>
					<comments>https://nyanblog2222.com/programming/2291/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 06 Sep 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Shift-JIS]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[ファイル読み込み]]></category>
		<category><![CDATA[文字コード]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2291</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/35.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/35.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はAccess等で使われるVBAで、Shift-JIS（SJIS）・UTF-8等、各種文字コードのファイルを読み込む方法を紹介します。内容としては、OpenステートメントやADODB.Streamを使った手法です。自 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/2291/">【VBA】Shift-JIS・UTF-8等、各種文字コードのファイル読み込み【コピペで使えるサンプル付き】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/35.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/35.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/35-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はAccess等で使われるVBAで、Shift-JIS（SJIS）・UTF-8等、各種文字コードのファイルを読み込む方法を紹介します。<br>内容としては、OpenステートメントやADODB.Streamを使った手法です。<br>自作関数のサンプルもつけてますので、是非ご活用ください！<br>また、同時にダイアログを開いて対象のファイル名を取得する方法も紹介してますので、良かったらそちらもどうぞ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</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><ol><li><a href="#toc3" tabindex="0">テストデータ</a></li><li><a href="#toc4" tabindex="0">（サブ関数）ダイアログを開いて対象のファイル名を取得する</a></li></ol></li><li><a href="#toc5" tabindex="0">Openステートメントでcsvファイル読み込み（Shift-JISのみ可）</a></li><li><a href="#toc6" tabindex="0">ADODB.Streamでcsvファイルを読み込む（UTF-8、Shift-JIS他）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">紹介する手法</span></h2>



<p>まず、本記事の簡単なまとめから♪</p>



<figure class="wp-block-table"><table><tbody><tr><td>・Openステートメント<br>　Shift-JISのみ<br>・ADODB.Stream　←　☆汎用性があるため個人的にはおすすめ<br>　Shift-JIS・UTF-8他</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc2">共通で使っているテストデータやサブ関数</span></h2>



<p>説明の際に使用するテストデータや、自作関数の中で呼び出しているサブ関数です。<br>本記事とは内容が離れますので、飛ばしてもらっても大丈夫です。</p>



<h3 class="wp-block-heading"><span id="toc3">テストデータ</span></h3>



<p>今回テストとして読み込むcsvファイルは以下を使用します。<br>（同じ内容で文字コードがShift-JIS・UTF-8のデータを用意）</p>



<pre class="wp-block-code"><code>No	郵便番号	住所	名前
1	859-5326	東京都春日井市向谷町１－６５	ヤマモトコーポレーション株式会社
2	987-2523	千葉県向田市山本町６５８－４４	華井　譲
3	789-0001	千葉県向田市山本町　ジンダ－ビル２F　２０１号	蓮田不動産株式会社
4	653-6567	大阪府大東市浅田８－９９９	株式会社ハッターフ
5	198-3463	鹿児島県薩摩川内市浜本１２３－７７	山本　茂</code></pre>



<h3 class="wp-block-heading"><span id="toc4">（サブ関数）ダイアログを開いて対象のファイル名を取得する</span></h3>



<p>ダイアログを開いて対象のファイル名を取得するサブ関数を用意しました。<br>直接ファイルパスを次項から紹介する関数のコード上に書いてしまっても良かったのですが、それではコピペして使いにくいので。。</p>



<p>内容としては、GetFileName_csvを呼び出すと、ダイアログを開いてcsvファイルのファイル名を取得し、戻り値として返す関数になります。</p>



<pre class="wp-block-code"><code>' GetFileName_csv
' csvファイル名を取得
Function GetFileName_csv()

    'ダイアログを開いてcsvファイルのファイル名を取得
    'Application.FileDialogを使うには、
    '参照設定でMicrosoft Office 1X.0 Object Libraryの追加が必要
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "csvファイル", "*.csv"
        .AllowMultiSelect = False
        If .Show = True Then
            GetFileName_csv = .SelectedItems(1)
        End If
    End With

End Function</code></pre>



<h2 class="wp-block-heading"><span id="toc5">Openステートメントでcsvファイル読み込み（Shift-JISのみ可）</span></h2>



<p>Openステートメントで、csvファイルを読み込む方法です。<br>Openステートメントでは、文字コードに合わせて対応していくことができないので、Accessのデフォルトの文字コードであるShift-JISでしか正しく読み取りできません。</p>



<p>以下、Openステートメントを使用したcsvファイル読込関数関数です。</p>



<pre class="wp-block-code"><code>' ReadCSVFile_Open
' csvファイル読込関数（Openステートメントを使用）
Sub ReadCSVFile_Open()
    
    'ファイル名取得
    Dim sOpenFileName As String
    sOpenFileName = GetFileName_csv
    If sOpenFileName = "" Then Exit Sub

    'ファイルを読み込んでイミディエイトウィンドウに内容を表示する
    Dim sBuf  As String
    Open sOpenFileName For Input As #1 'ファイルを開いて&#91;#1]という番号で管理
    Do Until EOF(1)
       Line Input #1, sBuf '1行づつバッファへ格納
       Debug.Print sBuf
    Loop
    Close #1
    
End Sub</code></pre>



<p>こちらの関数を使用して、Shift-JISのファイルを読み込んだ結果はこちらです。</p>



<p>ファイル名：SJIS.csv</p>



<pre class="wp-block-code"><code>No  郵便番号    住所    名前
1   859-5326    東京都春日井市向谷町１－６５    ヤマモトコーポレーション株式会社
2   987-2523    千葉県向田市山本町６５８－４４  華井　譲
3   789-0001    千葉県向田市山本町　ジンダ－ビル２F　２０１号   蓮田不動産株式会社
4   653-6567    大阪府大東市浅田８－９９９  株式会社ハッターフ
5   198-3463    鹿児島県薩摩川内市浜本１２３－７７  山本　茂</code></pre>



<p>正確に読み取れてますね。</p>



<p>試しにこの関数を使って、UTF-8も読み取ってみました。</p>



<p>ファイル名：UTF-8.csv</p>



<pre class="wp-block-code"><code>No  驛ｵ萓ｿ逡ｪ蜿ｷ    菴乗園  蜷榊燕
1   859-5326    譚ｱ莠ｬ驛ｽ譏･譌･莠募ｸょ髄隹ｷ逕ｺ・托ｼ搾ｼ厄ｼ・繝､繝槭Δ繝医さ繝ｼ繝昴Ξ繝ｼ繧ｷ繝ｧ繝ｳ譬ｪ蠑丈ｼ夂､ｾ
2   987-2523    蜊・痩逵悟髄逕ｰ蟶ょｱｱ譛ｬ逕ｺ・厄ｼ包ｼ假ｼ搾ｼ費ｼ・闖ｯ莠輔隴ｲ
3   789-0001    蜊・痩逵悟髄逕ｰ蟶ょｱｱ譛ｬ逕ｺ縲繧ｸ繝ｳ繝・阪ン繝ｫ・巽縲・抵ｼ撰ｼ大捷 闢ｮ逕ｰ荳榊虚逕｣譬ｪ蠑丈ｼ夂､ｾ
4   653-6567    螟ｧ髦ｪ蠎懷､ｧ譚ｱ蟶よｵ・伐・假ｼ搾ｼ呻ｼ呻ｼ・譬ｪ蠑丈ｼ夂､ｾ繝上ャ繧ｿ繝ｼ繝・
5   198-3463    鮖ｿ蜈仙ｳｶ逵瑚湊鞫ｩ蟾晏・蟶よｵ懈悽・托ｼ抵ｼ難ｼ搾ｼ暦ｼ・螻ｱ譛ｬ縲闌・</code></pre>



<p>全角が化けてしまっていますね。<br>前述のとおり、UTF-8を含む他の文字コードには対応していませんので、読み取る必要があれば次項をお使いください。</p>



<h2 class="wp-block-heading"><span id="toc6">ADODB.Streamでcsvファイルを読み込む（UTF-8、Shift-JIS他）</span></h2>



<p>ADODB.Streamで、csvファイルを読み込む方法です。<br>ADODB.Streamでは、UTF-8、Shift-JISを含む各種文字コードに対応しています。</p>



<p>以下、Openステートメントを使用したcsvファイル読込関数関数です。</p>



<pre class="wp-block-code"><code>' ReadCSVFile_ADODB
' csvファイル読込関数（ADODB.Streamを使用）
Sub ReadCSVFile_ADODB()
    
    'ファイル名取得
    Dim sOpenFileName As String
    sOpenFileName = GetFileName_csv
    If sOpenFileName = "" Then Exit Sub

    'ファイルを読み込んでイミディエイトウィンドウに内容を表示する
    Dim sBuf  As String
    With CreateObject("ADODB.Stream")
       .Charset = "UTF-8" 'SJISの場合、"shift_jis"
       .Open
       .LoadFromFile sOpenFileName
        Do Until .EOS
           sBuf = .ReadText(-2) '1行づつバッファへ格納
           Debug.Print sBuf
        Loop
       .Close
    End With
    
End Sub</code></pre>



<p>なお、上記関数をそのままコピペすると、UTF-8に対応した関数になります。<br>shift_jisに対応させる場合、</p>



<pre class="wp-block-code"><code>.Charset = "UTF-8"</code></pre>



<p>の部分を、</p>



<pre class="wp-block-code"><code>.Charset = "shift_jis"</code></pre>



<p>に書き換えてください。</p>



<p>その他、UTF-8、Shift-JIS以外の文字コードで読み取る場合は、<br>「レジストリエディタ」の「HKEY_CLASSES_ROOT\MIME\Database\Charset」から確認してください。<br>レジストリエディタは、<br>「Windowsマーク」キーと「R」キーを同時押し→ファイル名を指定して実行の画面が出たら、「regedit」と入力してエンターを押すと開くことができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="634" height="384" src="https://nyanblog2222.com/wp-content/uploads/2020/09/regedit_mojicd-min.png" alt="レジストリエディタ" class="wp-image-2305" srcset="https://nyanblog2222.com/wp-content/uploads/2020/09/regedit_mojicd-min.png 634w, https://nyanblog2222.com/wp-content/uploads/2020/09/regedit_mojicd-min-300x182.png 300w" sizes="auto, (max-width: 634px) 100vw, 634px" /></figure>



<p>それでは、まずshift_jisのファイルを読み込んでみました。</p>



<p>ファイル名：SJIS.csv</p>



<pre class="wp-block-code"><code>No  郵便番号    住所    名前
1   859-5326    東京都春日井市向谷町１－６５    ヤマモトコーポレーション株式会社
2   987-2523    千葉県向田市山本町６５８－４４  華井　譲
3   789-0001    千葉県向田市山本町　ジンダ－ビル２F　２０１号   蓮田不動産株式会社
4   653-6567    大阪府大東市浅田８－９９９  株式会社ハッターフ
5   198-3463    鹿児島県薩摩川内市浜本１２３－７７  山本　茂</code></pre>



<p>正確に読み取れてますね。</p>



<p>ファイル名：UTF-8.csv</p>



<pre class="wp-block-code"><code>No  郵便番号    住所    名前
1   859-5326    東京都春日井市向谷町１－６５    ヤマモトコーポレーション株式会社
2   987-2523    千葉県向田市山本町６５８－４４  華井　譲
3   789-0001    千葉県向田市山本町　ジンダ－ビル２F　２０１号   蓮田不動産株式会社
4   653-6567    大阪府大東市浅田８－９９９  株式会社ハッターフ
5   198-3463    鹿児島県薩摩川内市浜本１２３－７７  山本　茂</code></pre>



<p>こちらも、正しく読み取ることができました♪</p>



<p>以上、今回の記事が参考になれば幸いです。<br>関連として、もしUTF-8について知りたい！という方はこちらの記事もご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/windows/4659/" title="【ファイル】UTF-8のBOM付き、BOM無しの違い・確認・作成について" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/49-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/49-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/49-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/49-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/49-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【ファイル】UTF-8のBOM付き、BOM無しの違い・確認・作成について</div><div class="blogcard-snippet internal-blogcard-snippet">CSVファイルをExcelで確認すると文字化けすることはありませんか。それは文字コードがUTF-8のBOM無しで作成されているからかもしれません。本記事ではUTF-8のBOM付き、BOM無しの違い、確認方法、作成方法についてご紹介しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.07.15</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/2291/">【VBA】Shift-JIS・UTF-8等、各種文字コードのファイル読み込み【コピペで使えるサンプル付き】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/2291/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【VBA】インクリメントやデクリメントは使える？代替案は？</title>
		<link>https://nyanblog2222.com/programming/vba/2261/</link>
					<comments>https://nyanblog2222.com/programming/vba/2261/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 05 Sep 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[インクリメント]]></category>
		<category><![CDATA[デクリメント]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2261</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/34.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/34.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />C言語やJAVAなどで欠かせないインクリメントやデクリメントですが、ExcelやAccessなどで使用するVBAでも使えるか、調べてみました。 ・インクリメント変数の値を1増やす演算　例：i++、++i・デクリメント変数 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/vba/2261/">【VBA】インクリメントやデクリメントは使える？代替案は？</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/34.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/34.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/34-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>C言語やJAVAなどで欠かせないインクリメントやデクリメントですが、ExcelやAccessなどで使用するVBAでも使えるか、調べてみました。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">・インクリメント</span></strong><br>変数の値を1増やす演算　例：i++、++i<br><strong><span style="color:#b78d4a" class="has-inline-color">・デクリメント</span></strong><br>変数の値を1減らす演算　例：i－－、－－i</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBAでインクリメントやデクリメントは使えない？</a></li><li><a href="#toc2" tabindex="0">代替案について</a><ol><li><a href="#toc3" tabindex="0">加算代入演算子や減算代入演算子は？</a></li><li><a href="#toc4" tabindex="0">関数を作ってみるのは？</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAでインクリメントやデクリメントは使えない？</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">VBAにはインクリメントやデクリメントという概念がなく、使えません。</span></strong></p>



<p>試しに、i++やi－－と書くと以下のエラーメッセージが出ます。</p>



<pre class="wp-block-code"><code>コンパイルエラー:

修正候補:式</code></pre>



<p>++iやi－－と書くと以下のエラーメッセージが出ます。</p>



<pre class="wp-block-code"><code>コンパイル　エラー:

修正候補: 行番号 または 行ラベル または ステートメント または ステートメントの最後</code></pre>



<p>VBAでインクリメントやデクリメントが使えない理由としては、<br><strong><span style="color:#b78d4a" class="has-inline-color">VBA（Visual Basic for Applications）はBASICというプログラミング言語がルーツ</span></strong>なので、インクリメントやデクリメントが存在するC言語がルーツのプログラミング言語とは、<strong><span style="color:#b78d4a" class="has-inline-color">歴史が異なる</span></strong>からです。</p>



<figure class="wp-block-table"><table><tbody><tr><td>参考：VBA（Visual Basic for Applications）年表<br><br>(1964) BASIC<br>　　　↓<br>(1985) QuickBASIC<br>　　　↓<br>(1991) Microsoft Visual Basic<br>　　　↓<br>(1993) Visual Basic for Applications</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc2">代替案について</span></h2>



<p>気になる<strong><span style="color:#b78d4a" class="has-inline-color">代替案ですが、残念ながら有効なものはありません</span></strong>でした。</p>



<h3 class="wp-block-heading"><span id="toc3">加算代入演算子や減算代入演算子は？</span></h3>



<p>試してみましたが、インクリメントやデクリメントと似たことができる<strong><span style="color:#b78d4a" class="has-inline-color">加算代入演算子や減算代入演算子ではうまくいきませんでした。</span></strong></p>



<p>（参考）<br>・加算代入演算子<br>変数の値に右辺の値を加算する演算　例：i+=1<br>・減算代入演算子<br>変数の値に右辺の値を減算する演算　例：i-=1</p>



<p>以下、エラーメッセージです。</p>



<pre class="wp-block-code"><code>コンパイルエラー:

修正候補:式</code></pre>



<p>インクリメントやデクリメントと同様に、C言語がルーツのプログラミング言語で使用できる加算代入演算子や減算代入演算子についても、概念がないようですね。</p>



<h3 class="wp-block-heading"><span id="toc4">関数を作ってみるのは？</span></h3>



<p>無理やり捻りだすとするのであらば、<strong><span style="color:#b78d4a" class="has-inline-color">インクリメントやデクリメントする関数を作る</span></strong>のはどうでしょう。</p>



<p>例えば、以下の関数「Increment(ByRef)」でインクリメントできます。</p>



<pre class="wp-block-code basic"><code>'呼び出し元の関数
Public Function TestIncrement()
　Dim i As Int
　i = 0
　～
　Increment i
　～
End Function</code></pre>



<pre class="wp-block-code basic"><code>'インクリメント用関数
Sub Increment(ByRef i)
　i = i + 1
End Sub</code></pre>



<p>ただこれははっきり言ってしまえば、自己満足なコードです。<br>あまり分かりやすくなったとは言いづらいですし、作った本人はいいでしょうが、<strong><span style="color:#b78d4a" class="has-inline-color">他の人がコードを見たとき読みにくいコードに</span></strong>なるでしょうね。。</p>



<p>以上、今回はインクリメントやデクリメントがVBAでも使えるか、また代替案は何かないか調べてみました。<br>以下がそのまとめです。</p>



<figure class="wp-block-table"><table><tbody><tr><td>・VBAにインクリメントやデクリメントという概念はない<br>・代替案で有効なものもないため、<br>　　i = i + 1<br>　という一般的な書き方をするのが良い</td></tr></tbody></table></figure>



<p>そもそもVBAのルーツであるBASICはあくまで初心者向けの言語のため、いくらインクリメントやデクリメントが分かりやすく効率的だからといって、現状でもi = i + 1と1行で処理できるのですから、これ以上知識が必要となる機能追加は望まれないのかもしれませんね。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/vba/2261/">【VBA】インクリメントやデクリメントは使える？代替案は？</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/vba/2261/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【対処方法】指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。</title>
		<link>https://nyanblog2222.com/office/2244/</link>
					<comments>https://nyanblog2222.com/office/2244/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 04 Sep 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2244</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/33.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/33.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />Accessマクロで関数（VBA）を呼び出した際に出てくる「指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。」の対処方法をいくつか紹介します。（内容についてはMicrosof [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/2244/">【対処方法】指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/33.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/33.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/33-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>Accessマクロで関数（VBA）を呼び出した際に出てくる「<strong><span style="color:#b78d4a" class="has-inline-color">指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。</span></strong>」の対処方法をいくつか紹介します。<br>（内容についてはMicrosoft Access 2010で確認）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="487" height="111" src="https://nyanblog2222.com/wp-content/uploads/2020/09/access_kansu_ng-min.png" alt="エラーメッセージ" class="wp-image-2250" srcset="https://nyanblog2222.com/wp-content/uploads/2020/09/access_kansu_ng-min.png 487w, https://nyanblog2222.com/wp-content/uploads/2020/09/access_kansu_ng-min-300x68.png 300w" sizes="auto, (max-width: 487px) 100vw, 487px" /></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</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">関数名とモジュール名が同じ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">マクロで呼び出す関数の名称が間違っている</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">関数名と、マクロで呼び出す関数の名称が異なっている</span></strong>とエラーメッセージが表示されます。</p>



<p>以下の事例だと、関数名が「FileOpen()」なのに対し、マクロでは「FileOpn()」となってしまっています。<br>この場合、マクロでは関数名と同じ「FileOpen()」を呼び出してください。</p>



<p>関数：</p>



<pre class="wp-block-code basic"><code>Public Function FileOpen()
　～
End Function</code></pre>



<p>マクロの関数（プロシージャ）呼び出し：</p>



<pre class="wp-block-code basic"><code>=FileOpn()</code></pre>



<h2 class="wp-block-heading"><span id="toc2">関数名に日本語が含まれる</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">関数名に日本語が含まれている</span></strong>とエラーメッセージが表示されます。</p>



<p>以下の事例だと、関数名が「Fileを開く()」となっており日本語が含まれています。<br>この場合、日本語は使わず「FileOpen()」などの名前にしてください。</p>



<p>関数：</p>



<pre class="wp-block-code basic"><code>Public Function Fileを開く()
　～
End Function</code></pre>



<h2 class="wp-block-heading"><span id="toc3">関数名とモジュール名が同じ</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">関数名とモジュール名が同じ</span></strong>場合エラーメッセージが表示されます。</p>



<p>以下の事例だと、関数名が「FileOpen()」に対し、モジュール名も「FileOpen」になってしまっています。<br>この場合、モジュール名は「ファイルを開く」など関数名と異なる名前にしてください。</p>



<p>関数：</p>



<pre class="wp-block-code basic"><code>Public Function FileOpen()
　～
End Function</code></pre>



<p>モジュール名：</p>



<pre class="wp-block-code basic"><code>FileOpen</code></pre>



<p>ちなみに「関数名とマクロ名が同じ」場合はエラーメッセージは出ません。</p>
<p>投稿 <a href="https://nyanblog2222.com/office/2244/">【対処方法】指定した式に、Microsoft Accessが見つけることができない関数名が含まれています。</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/2244/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Excel】つみたてNISAシミュレーション（2）【VBA】</title>
		<link>https://nyanblog2222.com/office/1821/</link>
					<comments>https://nyanblog2222.com/office/1821/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Mon, 20 Jul 2020 10:30:59 +0000</pubDate>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[シミュレーション]]></category>
		<category><![CDATA[つみたてNISA]]></category>
		<category><![CDATA[投資]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1821</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/51.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/51.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はつみたてNISAの資産運用シミュレーションをExcelVBAで作ってみました。計算方法は金融庁のシミュレーションサイトと同様のものとなります。よかったら前回の記事もどうぞ♪ マクロ（VBA）が難易度が高い！と思われ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/1821/">【Excel】つみたてNISAシミュレーション（2）【VBA】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/51.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/51.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/51-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回は<strong><span style="color: #b78d4a;" class="has-inline-color">つみたてNISAの資産運用シミュレーション</span></strong>を<strong><span style="color: #b78d4a;" class="has-inline-color">ExcelVBA</span></strong>で作ってみました。<br>計算方法は金融庁のシミュレーションサイトと同様のものとなります。<br>よかったら前回の記事もどうぞ♪</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/office/1745/" title="【Excel】つみたてNISAシミュレーション（1）【計算方法】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/50-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/50-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/50-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/50-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/50-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Excel】つみたてNISAシミュレーション（1）【計算方法】</div><div class="blogcard-snippet internal-blogcard-snippet">金融庁が公開しているつみたてNISAの資産運用シミュレーションをExcelで作ってみようと思います。金融庁のサイトでは具体的な計算方法はありませんでしたが、試行錯誤しながら調べてみましたので気になる方はどうぞ♪1 つみたてNISAとは2 金融庁の資産運用シミュレーション3 計算方法4 グラフ5 まとめ……。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.07.16</div></div></div></div></a>
</div></figure>



<p>マクロ（VBA）が難易度が高い！と思われる方は一度こちらも見てくださいね♪<br>練習になるかもしれません。</p>




<a href="https://nyanblog2222.com/office/4621/" title="【Excel VBA】初心者でも簡単にマクロを作る方法" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/54-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/54-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/54-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Excel VBA】初心者でも簡単にマクロを作る方法</div><div class="blogcard-snippet internal-blogcard-snippet">業務効率化したい方必見！OfficeのExcel VBAで&quot;初心者でも簡単に&quot;マクロを作成する方法を紹介しています。知識0でも理解できるようサンプルはもちろん画像たっぷりで説明していますので、是非見て試してみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.07.10</div></div></div></div></a>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">つみたてNISAシミュレーション作成手順</a><ol><li><a href="#toc2" tabindex="0">１．EXCELシート作成</a></li><li><a href="#toc3" tabindex="0">２．VBAコード記述</a></li><li><a href="#toc4" tabindex="0">３．マクロ設定</a></li></ol></li><li><a href="#toc5" tabindex="0">シミュレーション使用方法について</a></li><li><a href="#toc6" tabindex="0">色々と分析してみた</a><ol><li><a href="#toc7" tabindex="0">利回りが3%と5%どれくらい差が出る？（20年・月20,000円・利回り3%or利回り5%）</a></li><li><a href="#toc8" tabindex="0">20年間最大額積み立てた場合、いくら貯まる？（20年・月33,333円・利回り5%）</a></li><li><a href="#toc9" tabindex="0">老後2000万円問題！月5000円積み立てると何年で2000万円貯まる？（60年・月5,000円・利回り5%）</a></li><li><a href="#toc10" tabindex="0">万が一、今後経済が不況に陥り、利回り-5%（赤字）だとどれだけ損する？（20年・月20,000円・利回り-5%）</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">つみたてNISAシミュレーション作成手順</span></h2>



<p>今回は、<br>１．EXCELシート作成<br>２．VBAコード記述<br>３．マクロ設定<br>の流れで紹介していきます。</p>



<h3 class="wp-block-heading"><span id="toc2">１．EXCELシート作成</span></h3>



<p>まず、入力フォームとして以下を作成します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="666" height="134" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-0-min.png" alt="EXCELシート作成" class="wp-image-1797" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-0-min.png 666w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-0-min-300x60.png 300w" sizes="auto, (max-width: 666px) 100vw, 666px" /></figure>



<p>ボタンについては「開発」タブ→「挿入」→「ボタン」から作成できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="176" height="207" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-1-min.png" alt="EXCELシート作成" class="wp-image-1798"/></figure>



<h3 class="wp-block-heading"><span id="toc3">２．VBAコード記述</span></h3>



<p>まず、「開発」タブ→「Visual Basic」からVBA記述画面を開きます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="542" height="102" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-4-min.png" alt="VBAコード記述" class="wp-image-1801" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-4-min.png 542w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-4-min-300x56.png 300w" sizes="auto, (max-width: 542px) 100vw, 542px" /></figure>



<p>記述していくVBAコードについては以下です。<br>内容の説明については、コードのコメントを参照ください。</p>



<p>基本的に、前回紹介した計算方法のイメージ通り作成します。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">１．計算①　配列に月々の複利計算結果を格納</span></strong></p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">２．計算②　①の配列から、月々の累計元本・積立額を算出。年毎に配列へ格納</span></strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="822" height="369" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-min.png" alt="VBAコード記述" class="wp-image-1802" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-min.png 822w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-min-300x135.png 300w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-min-768x345.png 768w" sizes="auto, (max-width: 822px) 100vw, 822px" /></figure>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">３．出力用配列作成　②の配列を元に出力したい要素を計算し、配列へ格納</span></strong></p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">４．出力　出力用配列から、それぞれEXCELシートに出力していく</span></strong><br>　（３までで出力用データの計算は全て行い、<br>　　後は４でほぼそのまま出力するだけのイメージ）</p>



<p>■TumitateNisaマクロ</p>



<pre class="wp-block-code basic"><code>Sub TumitateNisa()

    '積立年数から月数をセット
    Dim TOSHIKIKAN_NEN As Integer
    TOSHIKIKAN_NEN = Range("C2").Value2
    Dim TOSHIKIKAN_NEN_ARRAY As Integer
    TOSHIKIKAN_NEN_ARRAY = TOSHIKIKAN_NEN - 1
    Dim TOSHIKIKAN_TUKI As Integer
    TOSHIKIKAN_TUKI = TOSHIKIKAN_NEN * 12
    Dim TOSHIKIKAN_TUKI_ARRAY As Integer
    TOSHIKIKAN_TUKI_ARRAY = TOSHIKIKAN_TUKI - 1
    
    '月投資額をセット
    Dim TOSHIGAKU_TUKI As Long
    TOSHIGAKU_TUKI = Range("C3").Value2
    
    '利回り（年）から利回り（月）表面金利をセット
    Dim RIMAWAEI_TUKI As Double
    RIMAWAEI_TUKI = 1 + (Range("C4").Value2 / 12 / 100)
    
    '各配列用　年数が最大100年まで（12か月*100年）
    'コードがややこしくなるのと、
    'あまり増えても環境によってはEXCELがフリーズしたりするので
    '今回は動的配列にはしない
    Const MAXARRAY_1200 As Integer = 1200
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' 計算①　配列に月々の複利計算結果を格納
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim TumitateArray(MAXARRAY_1200, MAXARRAY_1200) As Double
    For i = 0 To TOSHIKIKAN_TUKI_ARRAY
        
        Dim Tumitate_Tuki As Double
        Tumitate_Tuki = TOSHIGAKU_TUKI
        For j = 0 To TOSHIKIKAN_TUKI_ARRAY
        
            TumitateArray(i, j) = 0
            
            If j &gt;= i Then
                TumitateArray(i, j) = Tumitate_Tuki
                
                Tumitate_Tuki = Tumitate_Tuki * RIMAWAEI_TUKI
            End If
    
        Next j
    
    Next i
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' 計算②　①の配列から、月々の累計元本・積立額を算出。年毎に配列へ格納
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim YearSumArray(MAXARRAY_1200, 1) As Double
    Dim GanponSum As Double
    GanponSum = 0
    Dim YearNum As Integer
    YearNum = 0
    For j = 0 To TOSHIKIKAN_TUKI_ARRAY
        
        If j &gt; 0 And j Mod 12 = 0 Then
            YearArrayNum = YearArrayNum + 1
        End If
        
        Dim TumitateSum As Double
        TumitateSum = 0
        For i = 0 To TOSHIKIKAN_TUKI_ARRAY
            TumitateSum = TumitateSum + TumitateArray(i, j)
        Next i
        
        '累計元本
        GanponSum = GanponSum + TOSHIGAKU_TUKI
        YearSumArray(YearArrayNum, 0) = GanponSum
        '累計積立額
        YearSumArray(YearArrayNum, 1) = TumitateSum
    
    Next j
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' 出力用配列作成　②の配列を元に出力したい要素を計算し、配列へ格納
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim YearTumitateArray(MAXARRAY_1200, 3) As Double
    For i = 0 To TOSHIKIKAN_NEN_ARRAY
        '累計元本
        YearTumitateArray(i, 0) = YearSumArray(i, 0)
        '累計運用益
        YearTumitateArray(i, 1) = YearSumArray(i, 1) - YearSumArray(i, 0)
        '累計積立額
        YearTumitateArray(i, 2) = YearSumArray(i, 1)
        '累計節税額
        YearTumitateArray(i, 3) = YearTumitateArray(i, 1) * (20.315 / 100)
    
    Next i

    '''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' 出力　出力用配列から、それぞれEXCELシートに出力していく
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''
    '前回のシュミレーション結果をクリアしておく
    Range("B7:F106").Clear
    
    '出力開始位置の一つ上にへカーソル移動
    Range("B6").Select

    'それぞれEXCELシートに出力
    For i = 0 To TOSHIKIKAN_NEN_ARRAY
        
        ActiveCell.Offset(1, 0).Activate
        '年
        ActiveCell.Value2 = i + 1
        '累計元本
        ActiveCell.Offset(0, 1).Value2 = Round(YearTumitateArray(i, 0))
        '累計運用益
        ActiveCell.Offset(0, 2).Value2 = Round(YearTumitateArray(i, 1))
        '累計積立額
        ActiveCell.Offset(0, 3).Value2 = Round(YearTumitateArray(i, 2))
        '累計節税額
        ActiveCell.Offset(0, 4).Value2 = Round(YearTumitateArray(i, 3))
        
    Next i
    
    '罫線を引く
    ActiveCell.CurrentRegion.Select
    Selection.Borders.LineStyle = xlContinuous
        
    '桁区切りする
    Selection.NumberFormatLocal = "#,###"
    
    '最終行の文字を赤色にする
    Selection.Rows(Selection.Rows.Count).EntireRow.Select
    Selection.Font.ColorIndex = 3
    
    'カーソルを年数に戻す
    Range("C2").Select

End Sub</code></pre>



<h3 class="wp-block-heading"><span id="toc4">３．マクロ設定</span></h3>



<p>最後に作成したマクロをボタンに登録します。<br>「右クリック」→「マクロの登録」</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="380" height="256" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-2-min.png" alt="マクロ設定" class="wp-image-1799" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-2-min.png 380w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-2-min-300x202.png 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></figure>



<p>マクロを選択して、完了です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="368" height="341" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-3-min.png" alt="マクロ設定" class="wp-image-1800" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-3-min.png 368w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-3-min-300x278.png 300w" sizes="auto, (max-width: 368px) 100vw, 368px" /></figure>



<h2 class="wp-block-heading"><span id="toc5">シミュレーション使用方法について</span></h2>



<p>使用方法は簡単です。<br>「年数」「月投資額」「利回り（年）」を入力して、<br>「つみたてNISAシミュレーションを開始する」ボタンをクリックするだけ♪</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="566" height="465" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5-min.png" alt="シミュレーション使用方法について" class="wp-image-1803" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5-min.png 566w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5-min-300x246.png 300w" sizes="auto, (max-width: 566px) 100vw, 566px" /></figure>



<p>試しに、金融庁のシミュレーションと比べてみましたが、<br>問題なく同じ結果となりました。<br><a class="link" href="https://www.fsa.go.jp/policy/nisa2/moneyplan_sim/index.html">資産運用シミュレーション ： 金融庁</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="818" height="881" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-1-min.png" alt="シミュレーション使用方法について" class="wp-image-1804" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-1-min.png 818w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-1-min-279x300.png 279w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-1-min-768x827.png 768w" sizes="auto, (max-width: 818px) 100vw, 818px" /></figure>



<h2 class="wp-block-heading"><span id="toc6">色々と分析してみた</span></h2>



<p>せっかくなので、いくつかのパターンでシミュレーションしてみました♪</p>



<h3 class="wp-block-heading"><span id="toc7">利回りが3%と5%どれくらい差が出る？（20年・月20,000円・利回り3%or利回り5%）</span></h3>



<p>2%変わるだけで、運用益が倍変わることが分かります。</p>



<p>[3%の場合]</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="569" height="460" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-6.png" alt="シミュレーション" class="wp-image-1810" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-6.png 569w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-6-300x243.png 300w" sizes="auto, (max-width: 569px) 100vw, 569px" /></figure>



<p>[5%の場合]</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="566" height="465" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5.png" alt="シミュレーション" class="wp-image-1811" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5.png 566w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5-300x246.png 300w" sizes="auto, (max-width: 566px) 100vw, 566px" /></figure>



<h3 class="wp-block-heading"><span id="toc8">20年間最大額積み立てた場合、いくら貯まる？（20年・月33,333円・利回り5%）</span></h3>



<p>つみたてNISAは年40万円・20年間つみたてが可能です。<br>そこで仮に平均利回りが5%だった場合、以下の結果となりました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="562" height="455" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-8.png" alt="シミュレーション" class="wp-image-1809" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-8.png 562w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-8-300x243.png 300w" sizes="auto, (max-width: 562px) 100vw, 562px" /></figure>



<h3 class="wp-block-heading"><span id="toc9">老後2000万円問題！月5000円積み立てると何年で2000万円貯まる？（60年・月5,000円・利回り5%）</span></h3>



<p>月5,000円ですと、56年で達成可能なようです。<br>元本と運用益の差から、複利の凄さがよくわかりますね。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="567" height="583" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-9.png" alt="シミュレーション" class="wp-image-1812" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-9.png 567w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-9-292x300.png 292w" sizes="auto, (max-width: 567px) 100vw, 567px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="571" height="600" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-10.png" alt="シミュレーション" class="wp-image-1813" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-10.png 571w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-10-286x300.png 286w" sizes="auto, (max-width: 571px) 100vw, 571px" /></figure>



<h3 class="wp-block-heading"><span id="toc10">万が一、今後経済が不況に陥り、利回り-5%（赤字）だとどれだけ損する？（20年・月20,000円・利回り-5%）</span></h3>



<p>前述の利回り5%と比べると、意外に損失が低いことが分かります。</p>



<p>[-5%の場合]</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="574" height="463" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-2-min.png" alt="シミュレーション" class="wp-image-1815" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-2-min.png 574w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-19-2-min-300x242.png 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /></figure>



<p>[5%の場合]</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="566" height="465" src="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5.png" alt="シミュレーション" class="wp-image-1811" srcset="https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5.png 566w, https://nyanblog2222.com/wp-content/uploads/2020/07/2020-07-18-5-300x246.png 300w" sizes="auto, (max-width: 566px) 100vw, 566px" /></figure>
<p>投稿 <a href="https://nyanblog2222.com/office/1821/">【Excel】つみたてNISAシミュレーション（2）【VBA】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/1821/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
