<?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/category/programming/vba/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/category/programming/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/category/programming/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>【Access】式に未定義関数 &#8216;xxx&#8217; があります。[原因,対処方法]</title>
		<link>https://nyanblog2222.com/office/access/3380/</link>
					<comments>https://nyanblog2222.com/office/access/3380/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 27 Jun 2021 10:38:05 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[対処方法]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=3380</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/42.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/42.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回は、Accessのクエリ等を実行した際に、「式に未定義関数 &#8216;xxx&#8217; があります。」とエラーメッセージが出て処理できない場合があります。このエラーには原因が複数パターン想定されるため、それぞ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3380/">【Access】式に未定義関数 &#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/42.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/42.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/42-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回は、Accessのクエリ等を実行した際に、<br>「<strong class="brown_color">式に未定義関数 &#8216;xxx&#8217; があります。</strong>」とエラーメッセージが出て処理できない場合があります。<br>このエラーには<span class="marker-under-red">原因が複数パターン</span>想定されるため、それぞれの対処方法を紹介します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="251" height="107" src="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062701.jpg" alt="エラーメッセージ" class="wp-image-3420"/></figure>




  <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><ol><li><a href="#toc3" tabindex="0">関数を定義していない、又は誤った関数名を使用している場合</a></li><li><a href="#toc4" tabindex="0">関数名とモジュール名が同じ場合</a></li><li><a href="#toc5" tabindex="0">ライブラリが参照不可になっている場合</a></li><li><a href="#toc6" tabindex="0">関数の宣言でPrivateを使っている場合</a></li><li><a href="#toc7" tabindex="0">関数名に２バイト文字が使用されている場合</a></li><li><a href="#toc8" tabindex="0">モジュールが破損している場合</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">エラー原因</span></h2>



<p>原因は複数パターンありますが、ざっくり言うと<br><span class="marker-under">システムがモジュール内に関数内で使用していないのに使っていると判断している</span>ためです。</p>



<p>以下の通り、うっかりミスからややこしいものもあるため<br>対処するには一つ一つ順に見ていきましょう。<br>（上から順に可能性の高いパターンです）</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-orange-border-color">
<ol class="wp-block-list"><li>関数を定義していない、又は誤った関数名を使用している場合</li><li>関数名とモジュール名が同じ場合</li><li>ライブラリが参照不可になっている場合</li><li>関数の宣言でPrivateを使っている場合</li><li>関数名に２バイト文字が使用されている場合</li><li>モジュールが破損している場合</li></ol>
</div>



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



<p>以下の正常な状態を一部変更し、エラーパターンを作成していきます。</p>



<p><strong class="brown_color">クエリでの関数呼び出し：「挨拶: CallHello()」</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="568" height="312" src="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062702.jpg" alt="" class="wp-image-3422" srcset="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062702.jpg 568w, https://nyanblog2222.com/wp-content/uploads/2021/06/2021062702-300x165.jpg 300w" sizes="auto, (max-width: 568px) 100vw, 568px" /></figure>



<p><strong class="brown_color">モジュール名：「こんにちは」<br>関数名：「CallHello()」</strong></p>



<pre class="wp-block-code basic"><code>Function CallHello() As String

CallHello = "Hello World"

End Function</code></pre>



<h3 class="wp-block-heading"><span id="toc3">関数を定義していない、又は誤った関数名を使用している場合</span></h3>



<p>勘違いで呼び出す関数を定義していない、又は誤った関数名を使用している場合、<br>呼び出すことができずエラーになります。</p>



<p>例えば、<br>Function CallH<span class="marker-under-red">e</span>llo() As String　と宣言しているのに、<br>CallH<span class="marker-under-red">a</span>llo()で呼び出している場合等</p>



<p>調べるには、一度クエリから呼び出している関数名で、Visual Basic画面にて<br>プロジェクト内のコード内を検索（ショートカットキー：「Ctrl+F」）してみましょう。<br>もしなければ、誤っていますのでクエリを変更してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="537" height="438" src="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062703-1.jpg" alt="検索文字列が見つかりません" class="wp-image-3424" srcset="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062703-1.jpg 537w, https://nyanblog2222.com/wp-content/uploads/2021/06/2021062703-1-300x245.jpg 300w" sizes="auto, (max-width: 537px) 100vw, 537px" /></figure>



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



<p>関数名とモジュール名が同じ場合、システム上名称が被ってしまいエラーとなります。</p>



<p>例えば、<br>Function <span class="marker-under-red">CallHello</span>() As String　と宣言しており、<br>モジュール名も<span class="marker-under-red">CallHello</span>になっている場合等</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="526" height="115" src="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062704-1.jpg" alt="" class="wp-image-3426" srcset="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062704-1.jpg 526w, https://nyanblog2222.com/wp-content/uploads/2021/06/2021062704-1-300x66.jpg 300w" sizes="auto, (max-width: 526px) 100vw, 526px" /></figure>



<p>この場合、関数名又はモジュール名を変更してください。</p>



<h3 class="wp-block-heading"><span id="toc5">ライブラリが参照不可になっている場合</span></h3>



<p>ライブラリが参照不可になっており、<br>ライブラリ内の関数を使用していた場合、エラーとなります。<br>パソコンの交換やOS・Officeのバージョンアップでエラーが上がるようになった場合は、<br>このケースの可能性があります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="455" height="312" src="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062705.jpg" alt="参照不可" class="wp-image-3430" srcset="https://nyanblog2222.com/wp-content/uploads/2021/06/2021062705.jpg 455w, https://nyanblog2222.com/wp-content/uploads/2021/06/2021062705-300x206.jpg 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /></figure>



<p>この場合、Visual Basic画面にてツールタブから参照設定を開き、<span class="marker-under-red">参照不可</span>がある場合は、<br>参照をあらためて追加するか、関数を自前で作成する等やり方を変える必要があります。</p>



<h3 class="wp-block-heading"><span id="toc6">関数の宣言でPrivateを使っている場合</span></h3>



<p>関数の宣言でPrivateを使っている場合、<br>モジュール内からしか呼び出すことができないため、エラーとなります。</p>



<p>Privateはアクセス修飾子と呼ばれ、他にPublic等があります。<br>以下の通りアクセス修飾子によって参照できる範囲（スコープ）が限られており、<br>・Private Function：モジュール内のみ参照可<br>・Public Function：モジュール外から参照可<br>・Function：暗黙的にPublicとなるため、モジュール外から参照可<br>となります。</p>



<p>なので、例えば、<br><span class="marker-under-red">Private Function </span>CallHello() As String　と宣言している場合は、<br><span class="marker-under-red">Function </span>CallHello() As String 又は<br><span class="marker-under-red">Public Function</span> CallHello() As String<br>に変更する必要があります。</p>



<h3 class="wp-block-heading"><span id="toc7">関数名に２バイト文字が使用されている場合</span></h3>



<p>関数名に日本語等の２バイト文字が使用されている場合、<br>VBA上はコンパイルできても対応してはいないので、クエリから呼び出すとエラーとなります。</p>



<p>なので、例えば、<br>Function <span class="marker-under-red">挨拶する</span>() As String　と宣言している場合は、<br>Function <span class="marker-under-red">CallHello</span>() As String<br>に変更する必要があります。<br>（クエリからの呼び出し側も同様に、CallHello()へ変更）</p>



<h3 class="wp-block-heading"><span id="toc8">モジュールが破損している場合</span></h3>



<p>モジュールが<span class="marker-under-red">破損</span>している場合、呼び出せずエラーとなります。</p>



<p>この場合は、新しくモジュールを作成し、ソースコードをコピーして作り直す必要があります。</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3380/">【Access】式に未定義関数 &#8216;xxx&#8217; があります。[原因,対処方法]</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/access/3380/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Access】メモリ不足です。【対処方法・原因】</title>
		<link>https://nyanblog2222.com/office/access/3359/</link>
					<comments>https://nyanblog2222.com/office/access/3359/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 26 May 2021 22:59:53 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[メモリ不足です。]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=3359</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/41.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/41.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はAccessのクエリやマクロを使用した際に、 「メモリ不足です。」 と突然エラーコードがでてしまった場合の対処方法を紹介します。 目次 エラーの原因は？どんな状況で発生する？対処方法Accessファイルの最適化（手 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3359/">【Access】メモリ不足です。【対処方法・原因】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/41.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/41.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/41-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はAccessのクエリやマクロを使用した際に、 <br><span class="marker-under-red"><span class="marker-under-red">「<span class="marker-under-red">メモリ不足です。</span>」</span></span> と突然エラーコードがでてしまった場合の対処方法を紹介します。</p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/05/2021052301.jpg" alt="メモリ不足です。" width="202" height="107" class="alignnone wp-image-3361 size-full"></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></li><li><a href="#toc3" tabindex="0">Accessファイルの最適化（手動）</a></li><li><a href="#toc4" tabindex="0">Accessファイルの最適化（自動）</a></li><li><a href="#toc5" tabindex="0">備考：「メモリ不足です。」エラーを再現するには</a></li></ol>
    </div>
  </div>

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



<p>エラーメッセージが「メモリ」とあるので<span class="marker-under">パソコンのメモリと勘違いしやすい</span>ですが、<br>原因は<span class="marker-under">クエリやマクロを使用した際に、<span class="marker-under">Accessファイルが2GBを超えてしまうため</span></span><span class="marker-under">です。<br></span><span class="marker-under"></span></p>



<p><span class="marker-under">Accessはファイル全体で最大2GBという制限があります。<br></span>私の場合、大規模データを扱うAccessの改修中、<br>突然「メモリ不足です。」と出て、 以下の対処をすることで解決できました。</p>



<p><strong class="brown_color">＜効果のあったこと＞<br></strong><span>・Accessファイルの最適化</span></p>



<p><strong class="brown_color">＜効果のなかったこと＞<br></strong>・メモリを8GBから16GBに増設<br>・仮想メモリを付与<br>・<span>MaxLocksPerFileというトランザクション処理の最大値を変更<br>・パソコン再起動<br>・Accessファイルの修復　等</span></p>



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



<p>今回のエラーの原因が、<span class="marker-under">Accessファイルが2GBを超過することにあるため、<br></span>対処方法は以下のファイルサイズ対策になります。</p>



<ul class="wp-block-list"><li><strong class="brown_color">Accessファイルの最適化（おすすめ！）<br></strong>（手動・自動による最適化）<br>Accessファイルを最適化することで、不要な領域を整理する<br>メリット：簡単で、今まで通り利用できる<br>デメリット：最適化しても容量が2GBを超える場合対応できない<strong class="brown_color"> </strong></li><li><strong class="brown_color">Accessファイルの分割<br></strong>Accessファイルのデータを別のAccessファイルに作り、リンクテーブルで連携する。<br>例）AccessAはAテーブル、AccessBはBテーブル。AccessAからBのリンクテーブルを貼る<br><span>メリット：すべてのテーブル容量の合計が2GBを超過しても使用できる<br>デメリット：個々のテーブル容量が2GBを超過すると使えない</span></li><li><strong class="brown_color">DB構築<br></strong>SQLServerや<span>PostgresなどDBを構築し、 データはDBからリンクテーブルで利用、編集や更新等はAccessで行う<br>メリット：テーブルの容量が2GBを超過しても使用できる<br>デメリット：DB構築は少しハードルが高い</span></li></ul>



<p>ただ、「メモリ不足です。」エラーが出る場合、単純に最適化ができていないことが多いため、 次項からは<span class="marker-under">Accessファイルの最適化</span>だけに絞って説明します。</p>



<h2 class="wp-block-heading"><span id="toc3">Accessファイルの最適化（手動）</span></h2>



<p><span class="marker-under">手動で最適化</span>する方法です。<br>最適化は数分程度かかることもあるため、ユーザーの都合のいいときに最適化できます。<br>デメリットは意識的に行わないとならないことです。</p>



<p>方法は、「ファイル」→「情報」から、「データベースの最適化／修復」を選択するだけです。</p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-17_No-00.jpg" alt="最適化" width="800" height="452" class="alignnone wp-image-3368 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-17_No-00.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-17_No-00-300x170.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-17_No-00-768x434.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /> 押すと、最適化が開始され、右下にメッセージが現れます。 <img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-28-23_No-00.jpg" alt="" width="451" height="44" class="alignnone size-full wp-image-3370" srcset="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-28-23_No-00.jpg 451w, https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-28-23_No-00-300x29.jpg 300w" sizes="auto, (max-width: 451px) 100vw, 451px" /></p>



<h2 class="wp-block-heading"><span id="toc4">Accessファイルの最適化（自動）</span></h2>



<p><span class="marker-under">自動で最適化</span>する方法です。<br>Accessファイルを閉じる際に、毎回最適化されるのでユーザーは意識せず最適化できます。<br>デメリットとしては、毎回最適化に時間がかかることや、<br>複数ユーザーで頻繁に使用すると破損するリスクがあるため、あまり使用しない方がいいという意見もあります。</p>



<p>方法は、「ファイル」→「Accessのオプション」から、「閉じるときに最適化する」を選択するだけです。</p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-47_No-00.jpg" alt="最適化" width="800" height="579" class="alignnone wp-image-3369 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-47_No-00.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-47_No-00-300x217.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2021/05/SnapCrab_NoName_2021-5-23_15-14-47_No-00-768x556.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>



<h2 class="wp-block-heading"><span id="toc5">備考：「メモリ不足です。」エラーを再現するには</span></h2>



<p>まず、以下のコードを実行して、2GB弱のデータを作ります。<br>（コード自体は2GB以上作ろうとするので、処理の途中でAccessが固まる or エラーになります）<br>コードは、<a href="https://docs.microsoft.com/ja-jp/office/troubleshoot/access/error-when-perform-operation-on-table">「Microsoft Docs：Access テーブルで操作を実行すると、&#8221;ディスク領域またはメモリが足りない&#8221; というエラーが発生する」</a>を参考にしています。</p>



<pre class="wp-block-code basic"><code>Sub CreateBigTable()
　　Dim db As Database, rs As Recordset
　　Dim iCounter As Long, strChar As String
　　Set db = CurrentDb
　　db.Execute "CREATE TABLE BigTable (ID LONG, Field1 TEXT(255), " &amp; _
　　　　"Field2 TEXT(255), Field3 TEXT(255), Field4 TEXT(255))", _
　　　　dbFailOnError
　　Set rs = db.OpenRecordset("BigTable", dbOpenDynaset)
　　iCounter = 0
　　strChar = String(255, " ")
　　While iCounter &lt;= 100000000
　　　　rs.AddNew
　　　　rs!ID = iCounter
　　　　rs!Field1 = strChar
　　　　rs!Field2 = strChar
　　　　rs!Field3 = strChar
　　　　rs!Field4 = strChar
　　　　rs.Update
　　　　iCounter = iCounter + 1
　　Wend
　　MsgBox "Done!"
End Sub</code></pre>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/05/2021052302.jpg" alt="2GB" width="421" height="580" class="alignnone wp-image-3362 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2021/05/2021052302.jpg 421w, https://nyanblog2222.com/wp-content/uploads/2021/05/2021052302-218x300.jpg 218w" sizes="auto, (max-width: 421px) 100vw, 421px" /></p>



<p>次に、できたテーブルを使用してクエリを作成し、動作させると 「メモリ不足です。」のエラーが再現できます。</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3359/">【Access】メモリ不足です。【対処方法・原因】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/access/3359/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Access】データ型変換まとめ【文字列・数値・日付など】</title>
		<link>https://nyanblog2222.com/office/access/3299/</link>
					<comments>https://nyanblog2222.com/office/access/3299/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 09 May 2021 11:17:12 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[データ型変換]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=3299</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/40.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/40.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />AccessのクエリやVBA、SQLでよく使うデータ型変換関数をまとめました。 ◇よく使うデータ型変換とは？Googleで頻繁に検索されているものを主に紹介。・文字列⇔数値・文字列⇔日付型・メモ型→文字列（テキスト型）・ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3299/">【Access】データ型変換まとめ【文字列・数値・日付など】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/40.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/40.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/40-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>AccessのクエリやVBA、SQLでよく使う<span class="marker-under">データ型変換関数</span>をまとめました。</p>



<p><strong class="brown_color">◇よく使うデータ型変換とは？</strong><br>Googleで頻繁に検索されているものを主に紹介。<br><span class="marker-under">・文字列⇔数値<br>・文字列⇔日付型<br>・メモ型→文字列（テキスト型）<br>・数値→通貨型</span><br>その中でもあまり使わないものの説明は省略しています。</p>



<p>※<span class="marker-under-red">許容範囲の大きい型から小さい型への変換は注意</span>してください！<br>　エラーなく桁落ちするのでバグと認識しにくいです。</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">よく使うデータ型変換と使用例</a><ol><li><a href="#toc2" tabindex="0">文字列⇔数値</a><ol><li><a href="#toc3" tabindex="0">・文字列→数値（整数型）</a></li><li><a href="#toc4" tabindex="0">・文字列→数値（長整数型）</a></li><li><a href="#toc5" tabindex="0">・文字列→数値（倍精度浮動小数点型）</a></li><li><a href="#toc6" tabindex="0">&nbsp;参考：文字列→数値においてValやCSng、CDecを使わない理由</a></li><li><a href="#toc7" tabindex="0">・数値→文字列</a></li><li><a href="#toc8" tabindex="0">・変換値にNullが含まれる場合</a></li></ol></li><li><a href="#toc9" tabindex="0">文字列⇔日付型</a><ol><li><a href="#toc10" tabindex="0">・文字列→日付型</a><ol><li><a href="#toc11" tabindex="0">・「YYYY/MM/DD」「YYYY年MM月DD日」「gg年MM月DD日」形式の場合</a></li><li><a href="#toc12" tabindex="0">・「YYYYMMDD」形式の場合</a></li><li><a href="#toc13" tabindex="0">・「YYYY.MM.DD」形式の場合</a></li><li><a href="#toc14" tabindex="0">・文字列がNullの場合</a></li></ol></li><li><a href="#toc15" tabindex="0">・日付型→文字列型</a></li></ol></li><li><a href="#toc16" tabindex="0">メモ型→文字列（テキスト型）</a></li><li><a href="#toc17" tabindex="0">数値→通貨型</a></li></ol></li><li><a href="#toc18" tabindex="0">参考：データ型変換関数一覧（Microsoft公式サイトより）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">よく使うデータ型変換と使用例</span></h2>



<h3 class="wp-block-heading"><span id="toc2">文字列⇔数値</span></h3>



<h4 class="wp-block-heading"><span id="toc3">・文字列→数値（整数型）</span></h4>



<pre class="wp-block-code"><code>CInt(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>－１，２３４</td><td>-1234</td></tr><tr><td>－１２３４．５</td><td>-1234</td></tr><tr><td>1,000.001</td><td>1000</td></tr><tr><td>0</td><td>0</td></tr><tr><td>(Null)</td><td>#エラー</td></tr><tr><td>-1.001</td><td>-1</td></tr><tr><td>１２３４．５</td><td>1234</td></tr><tr><td>￥１，２３４</td><td>1234</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc4">・文字列→数値（長整数型）</span></h4>



<pre class="wp-block-code"><code>CLng(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>－１，２３４</td><td>-1234</td></tr><tr><td>－１２３４．５</td><td>-1234</td></tr><tr><td>1,000.001</td><td>1000</td></tr><tr><td>0</td><td>0</td></tr><tr><td>(Null)</td><td>#エラー</td></tr><tr><td>-1.001</td><td>-1</td></tr><tr><td>１２３４．５</td><td>1234</td></tr><tr><td>￥１，２３４</td><td>1234</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc5">・文字列→数値（倍精度浮動小数点型）</span></h4>



<pre class="wp-block-code"><code>CDbl(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>－１，２３４</td><td>-1234</td></tr><tr><td>－１２３４．５</td><td>-1234.5</td></tr><tr><td>1,000.001</td><td>1000.001</td></tr><tr><td>0</td><td>0</td></tr><tr><td>(Null)</td><td>#エラー</td></tr><tr><td>-1.001</td><td>-1.001</td></tr><tr><td>１２３４．５</td><td>1234.5</td></tr><tr><td>￥１，２３４</td><td>1234</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc6">&nbsp;参考：文字列→数値においてValやCSng、CDecを使わない理由</span></h4>



<p><strong>・Val</strong><br>文字列から数値への変換といえば、Val関数もありますが、<br>文字列に「，」や「￥」、全角文字が含まれると対応できない（値が0になる）ため、あまりおすすめできません。<br>汎用性を考えるとCDbl([項目名])がおすすめです。</p>



<p><strong>・CSng</strong><br>単精度浮動小数点型は演算誤差が発生しやすくおすすめできません。<br>そもそもややこしい分野なのであまり理解せず使用するには危険かと思います。&nbsp;</p>



<p><strong>・CDec</strong><br>Access クエリではサポートされていません。</p>



<h4 class="wp-block-heading"><span id="toc7">・数値→文字列</span></h4>



<pre class="wp-block-code"><code>CStr(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>数値（整数型）</th><th>数値（長整数型）</th><th>数値（単精度浮動小数点型）</th><th>数値（倍精度浮動小数点型）</th></tr></thead><tbody><tr><td>1000</td><td>1000</td><td>1000.001</td><td>1000.001</td></tr><tr><td>1</td><td>1</td><td>1</td><td>1</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>-1</td><td>-1</td><td>-1</td><td>-1</td></tr><tr><td>-1000</td><td>-1000</td><td>-1000.001</td><td>-1000.001</td></tr></tbody></table></figure>



<p>↓　文字列変換</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>文字列</th><th>文字列</th><th>文字列</th><th>文字列</th></tr></thead><tbody><tr><td>1000</td><td>1000</td><td>1000.001</td><td>1000.001</td></tr><tr><td>1</td><td>1</td><td>1</td><td>1</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>-1</td><td>-1</td><td>-1</td><td>-1</td></tr><tr><td>-1000</td><td>-1000</td><td>-1000.001</td><td>-1000.001</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc8">・変換値にNullが含まれる場合</span></h4>



<p>変換元の項目に値が何もない（Null）場合がありますが、<br>変換関数で出力される値は殆どの場合「#エラー」となってしまいます。<br>そのため、Nullが想定される場合はNullを指定の値に置換するNz関数を利用します。</p>



<pre class="wp-block-code"><code>Nz(&#91;項目名], 置換値）</code></pre>



<p>例）CDbl(Nz([項目名],0))、CStr(Nz([項目名],0))<br>　　変換前にNullが0に置換されるので、エラーとなりません。</p>



<h3 class="wp-block-heading"><span id="toc9">文字列⇔日付型</span></h3>



<h4 class="wp-block-heading"><span id="toc10">・文字列→日付型</span></h4>



<p>基本、日付型への変換はCDateを使用しますが、<br>文字列がどのような形式かでやり方が異なります。</p>



<h5 class="wp-block-heading"><span id="toc11">・「YYYY/MM/DD」「YYYY年MM月DD日」「gg年MM月DD日」形式の場合</span></h5>



<pre class="wp-block-code"><code>CDate(&#91;項目名])</code></pre>



<p>変換例<br>「#エラー」となっている箇所については、次項から説明します。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>20210501</td><td>#エラー</td></tr><tr><td>2021/05/02</td><td>2021/05/02</td></tr><tr><td>2021年5月3日</td><td>2021/05/03</td></tr><tr><td>令和3年5月4日</td><td>2021/05/04</td></tr><tr><td>2021.05.05</td><td>#エラー</td></tr><tr><td>(Null)</td><td>#エラー</td></tr></tbody></table></figure>



<h5 class="wp-block-heading"><span id="toc12">・「YYYYMMDD」形式の場合</span></h5>



<pre class="wp-block-code"><code>CDate(Format(&#91;項目名],"@@@@\/@@\/@@"))</code></pre>



<p>または、</p>



<pre class="wp-block-code"><code>DateSerial(Mid(&#91;項目名],1,4),Mid(&#91;項目名],5,2),Mid(&#91;項目名],7,2))</code></pre>



<p>どちらの関数を使っても結果は特に変わらないため好みだと思いますが、<br>個人的には見やすく、ミスも少なそうなのでFormatを使用するのがおすすめです。</p>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>20210501</td><td>2021/05/01</td></tr></tbody></table></figure>



<h5 class="wp-block-heading"><span id="toc13">・「YYYY.MM.DD」形式の場合</span></h5>



<pre class="wp-block-code"><code>CDate(Replace(&#91;項目名],".","/"))</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>2021.05.05</td><td>2021/05/05</td></tr></tbody></table></figure>



<h5 class="wp-block-heading"><span id="toc14">・文字列がNullの場合</span></h5>



<pre class="wp-block-code"><code>IIf(IsNull(&#91;項目名]),Null,CDate(&#91;項目名]))</code></pre>



<p>NullであればNullを返すので、エラーとなりません。</p>



<h4 class="wp-block-heading"><span id="toc15">・日付型→文字列型</span></h4>



<pre class="wp-block-code"><code>CStr(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>2021/01/03</td><td>2021/01/03</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc16">メモ型→文字列（テキスト型）</span></h3>



<p>変換関数はありません。</p>



<p>変換不要で、<br>・メモ型→文字列<br>に値の代入（更新）ができます。</p>



<h3 class="wp-block-heading"><span id="toc17">数値→通貨型</span></h3>



<pre class="wp-block-code"><code>CCur(&#91;項目名])</code></pre>



<p>変換例</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変換前</th><th>変換後</th></tr></thead><tbody><tr><td>-1000.001</td><td>-¥1,000.001<br>（見た目上は-¥1,000）</td></tr><tr><td>-1</td><td>-¥1</td></tr><tr><td>0</td><td>¥0</td></tr><tr><td>1</td><td>¥1</td></tr><tr><td>1000.001</td><td>¥1,000.001<br>（見た目上は¥1,000）</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc18">参考：データ型変換関数一覧（Microsoft公式サイトより）</span></h2>



<p>データ変換関数は主に以下のような「C」から始まるものがあります。<br>これらの他にも変換関数はありますが、これだけ知っていたら十分かと思われます。</p>



<p><a href="https://support.microsoft.com/ja-jp/office/%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%E5%A4%89%E6%8F%9B%E9%96%A2%E6%95%B0-8ebb0e94-2d43-4975-bb13-87ac8d1a2202">Microsoft：データ型変換関数</a>より引用</p>



<figure id="tblID0EJDAAA" class="wp-block-table"><table><thead><tr><th><strong>関数</strong></th><th><strong>戻り値の型</strong></th><th><strong>引数&nbsp;</strong><strong><em>expression</em>&nbsp;</strong><strong>の範囲</strong></th></tr></thead><tbody><tr><td><strong>CBool</strong></td><td>ブール値型</td><td>任意の有効な<strong>文字列式</strong>または数式を指定します。</td></tr><tr><td><strong>CByte</strong></td><td>バイト型</td><td>0 から 255。</td></tr><tr><td><strong>CCur</strong></td><td>通貨型</td><td>-922,337,203,685,477.5808 から 922,337,203,685,477.5807。</td></tr><tr><td><strong>CDate</strong></td><td>日付型</td><td>任意の有効な日付式を指定します。</td></tr><tr><td><strong>CDbl</strong></td><td>倍精度浮動小数点型</td><td>-1.79769313486231E308 から<br>-4.94065645841247E-324 (負の値)。<br>4.94065645841247E-324 から 1.79769313486232E308 (正の値)。</td></tr><tr><td><strong>CDec</strong></td><td>小数点型</td><td>
<p>小数点以下の桁数が 0 の場合 (小数部分を持たない場合)、<br>+/-79,228,162,514,264,337,593,543,950,335。<br>小数点以下の桁数が 28 桁の場合、<br>+/-7.9228162514264337593543950335。<br>最小値は、0 を除いた場合は、<br>0.0000000000000000000000000001。</p>
</td></tr><tr><td><strong>CInt</strong></td><td>整数型</td><td>-32,768 から 32,767。小数点以下は丸められます。</td></tr><tr><td><strong>CLng</strong></td><td>長整数型</td><td>-2,147,483,648 から 2,147,483,647。<br>小数点以下は丸められます。</td></tr><tr><td><strong>CSng</strong></td><td>単精度浮動小数点型</td><td>-3.402823E38 から -1.401298E-45 (負の値)。<br>1.401298E-45 から 3.402823E38 (正の値)。</td></tr><tr><td><strong>CStr</strong></td><td>文字列</td><td>CStr の戻り値は&nbsp;<em>expression</em>&nbsp;引数に依存します。</td></tr><tr><td><strong>CVar</strong></td><td>バリアント型</td><td>数値の場合は<strong>倍精度浮動小数点型</strong>の範囲と同です。<br>数値以外の場合は<strong>文字列型の範囲</strong>と同じです。</td></tr></tbody></table></figure>
<p>投稿 <a href="https://nyanblog2222.com/office/access/3299/">【Access】データ型変換まとめ【文字列・数値・日付など】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/access/3299/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-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><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>【対処方法】Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました</title>
		<link>https://nyanblog2222.com/office/access/2541/</link>
					<comments>https://nyanblog2222.com/office/access/2541/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 31 Oct 2020 01:05:29 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2541</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/37.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/37.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />正常に動いていたAccessファイルが、突然 「Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました」 とエラーメッセージが出て使えなくなってしまった場 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/office/access/2541/">【対処方法】Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/37.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/37.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/37-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>正常に動いていたAccessファイルが、突然
<span class="marker-under-red">「Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました」</span>
とエラーメッセージが出て使えなくなってしまった場合の対処方法を紹介します。</p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/10/Access_OLE_ERR-min.png" alt="Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました" width="631" height="128" class="alignnone wp-image-2543 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/Access_OLE_ERR-min.png 631w, https://nyanblog2222.com/wp-content/uploads/2020/10/Access_OLE_ERR-min-300x61.png 300w" sizes="auto, (max-width: 631px) 100vw, 631px" /></p>




  <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">エラーの原因は？どんな状況で発生する？</a><ol><li><a href="#toc2" tabindex="0">エラー原因</a></li><li><a href="#toc3" tabindex="0">どんな状況で発生するか</a></li></ol></li><li><a href="#toc4" tabindex="0">対処方法・注意事項</a><ol><li><a href="#toc5" tabindex="0">対処方法</a></li><li><a href="#toc6" tabindex="0">注意事項</a></li></ol></li></ol>
    </div>
  </div>

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



<h3 class="wp-block-heading"><span id="toc2">エラー原因</span></h3>



<p>調べてみると、<span class="marker-under">対象のAccessファイルのフォーム等に何かしらの不具合があることが原因</span>のようでした。<br>
ただ、「これが原因！」というのは判別しづらいようですね。</p>



<h3 class="wp-block-heading"><span id="toc3">どんな状況で発生するか</span></h3>



<p>色々なパターンがあるようですが、<br>
<span class="marker-under">主にAccessファイルを作成したパソコンと異なるパソコンで使用すると起きる</span>ようです。</p>



<p>参考として、私は以下の状況でエラーが発生しました。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list"><li>社内のパソコンリプレース</li><li>パソコン交換後、Accessのフォーム画面でボタンを押した際にエラーメッセージが出た</li><li>新旧パソコンの環境<br>旧パソコン：Windows7 32bit、Microsft Access 2013<br>新パソコン：Windows10 64bit、Microsft Access 2019 64bit</li><li>全てのAccessファイルでエラーが出たのではなく、多数ある中の一つだけ</li><li>Microsft Access 2019 32bitでも試してみたので、Officeのbit数の問題ではなさそう</li></ul>
</div>



<p>これは私の想像になりますが、新パソコンのチェック機能の強化により、旧パソコンではチェックされていなかった不具合が表に出てきてしまったのかもしれません。<br>新しいパソコンだと性能はもちろんセキュリティなども強化され、昔できていたことができなくなることはよくあることだからです。</p>



<h2 class="wp-block-heading"><span id="toc4">対処方法・注意事項</span></h2>



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



<p>対処方法は「新しいAccessファイルを作り、元のAccessファイルから全ての情報をインポートする」です。<br>（説明する際の画像はMicrosoft Office 2010のものですが、手順自体はMicrosoft Office 2019でも同じです）</p>



<p>詳細な手順は以下になります。</p>



<p><span class="marker-under-blue">（前準備）拡張子がmdbの場合は、accdb変換</span><br>
必須ではありませんが、mdbはいつか使えなくなる危険性があるのでこのタイミングで変換しておいた方が無難です。<br>
例）CSVインポート.mdb→CSVインポート.accdb<br>
変換した場合はショートカットはもちろん、Accessファイルが他のAccessファイルからリンクテーブルとして参照されている場合、リンク先が変わってしまうためご注意ください。</p>



<p><img loading="lazy" decoding="async" width="1251" height="479" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-4-min.png" alt="accdb変換" class="alignnone wp-image-2563 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-4-min.png 800w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-4-min-300x115.png 300w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-4-min-1024x392.png 1024w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-4-min-768x294.png 768w" sizes="auto, (max-width: 1251px) 100vw, 1251px" /></p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-5-min.png" alt="mdb→accdb" width="196" height="120" class="alignnone size-full wp-image-2566"></p>



<p><strong>１．対象のAccessファイルが入っているフォルダと異なるフォルダで右クリックし、 新規作成からMicrosoft Access データベースをクリック</strong></p>



<p> <img loading="lazy" decoding="async" width="721" height="203" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-1-min.png" alt="新規作成" class="alignnone wp-image-2569 size-full" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-1-min.png 721w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-1-min-300x84.png 300w" sizes="auto, (max-width: 721px) 100vw, 721px" /></p>



<p><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-2-min.png" alt="新規作成" width="290" height="117" class="alignnone size-full wp-image-2568"></p>



<p><strong>２．新規作成されたAccessファイルを、対象のAccessファイルと同じ名前とする</strong></p>



<p> 例）「新規 Microsoft Access データベース.accdb」を作成し、「CSVインポート.accdb」にリネーム</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="182" height="119" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-3-min.png" alt="新規作成" class="wp-image-2567"/></figure>



<p><strong><strong>３．</strong>２で作成したAccessファイルを開き、外部データタブからAccessデータベースのインポートを選択</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="487" height="250" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-6-min.png" alt="Accessインポート" class="wp-image-2570" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-6-min.png 487w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-6-min-300x154.png 300w" sizes="auto, (max-width: 487px) 100vw, 487px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="745" height="547" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-7-min.png" alt="Accessインポート" class="wp-image-2571" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-7-min.png 745w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-7-min-300x220.png 300w" sizes="auto, (max-width: 745px) 100vw, 745px" /></figure>



<p><strong><strong>４．</strong>対象のAccessファイルをクリックして、OKを押すと「オブジェクトのインポート」画面が出るので、オプションをクリック</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="544" height="411" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-9-min.png" alt="Accessインポート" class="wp-image-2572" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-9-min.png 544w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-9-min-300x227.png 300w" sizes="auto, (max-width: 544px) 100vw, 544px" /></figure>



<p><strong>５．オプションで出てきたチェック項目を全てチェックする</strong></p>



<p><strong>６．全てのタブ（テーブル・クエリ・フォーム・レポート・マクロ・モジュール）ですべて選択をクリックし、OKをクリック</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="596" height="413" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-10-min.png" alt="Accessインポート" class="wp-image-2573" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-10-min.png 596w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-10-min-300x208.png 300w" sizes="auto, (max-width: 596px) 100vw, 596px" /></figure>



<p><strong>７．Accessファイルを閉じて、元々のAccessファイルのフォルダに移し替える。</strong></p>



<p>※元々のAccessファイルは念のため名前を変えてバックアップとして残しておいてください。</p>



<p><span class="marker-under">これでAccessファイルの作り直しは完了</span>です。</p>



<p>インポート中に何かしらエラーで取り込めないものがありますが、<br>恐らく何かしら問題のあるオブジェクトがほとんどですので、<br>基本不要なものなので気にしなくてもいいかと思います。</p>



<p>ただ、 念のためそのオブジェクトが使われていないかはインポート後に確認して、<br>必要であれば個別に対象のAccessファイルからコピペしてきてください。</p>



<h3 class="wp-block-heading"><span id="toc6">注意事項</span></h3>



<p>上記方法では、<span class="marker-under-red">VBAのプロジェクト名は引き継がれない</span>ので注意してください。<br>例えば、DAOを使ってテーブル操作をする場合は、Databeseオブジェクトの変数を宣言していたりしますが、その場合、被らないようにプロジェクト名をあえて固有の名前に変えていたりします。</p>



<p>その場合、インポート後に手で直してください。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="358" height="495" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-12-min.png" alt="Accessインポート" class="wp-image-2574" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-12-min.png 358w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-12-min-217x300.png 217w" sizes="auto, (max-width: 358px) 100vw, 358px" /></figure>



<p>↓</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="309" height="491" src="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-13-min.png" alt="Accessインポート" class="wp-image-2575" srcset="https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-13-min.png 309w, https://nyanblog2222.com/wp-content/uploads/2020/10/2020-10-17-13-min-189x300.png 189w" sizes="auto, (max-width: 309px) 100vw, 309px" /></figure>


<p>投稿 <a href="https://nyanblog2222.com/office/access/2541/">【対処方法】Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/office/access/2541/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【VBA】Switch関数とSelect Caseステートメント【違いや記述方法を簡単に解説】</title>
		<link>https://nyanblog2222.com/programming/vba/2344/</link>
					<comments>https://nyanblog2222.com/programming/vba/2344/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 13 Sep 2020 13:11:00 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Switch　Select Case　違い]]></category>
		<category><![CDATA[VBA　Select Caseステートメント]]></category>
		<category><![CDATA[VBA　Switch関数]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2344</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/36.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/36.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />VBAには条件分岐の手段の一つとしてSwitch関数やSelect Caseステートメントがありますが、これらの違いや記述方法を紹介します。C言語やJAVA言語でのswitch文との比較もしてますので、そちらも良かったら [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/vba/2344/">【VBA】Switch関数とSelect Caseステートメント【違いや記述方法を簡単に解説】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/36.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/36.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/36-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>VBAには条件分岐の手段の一つとして<strong><span style="color:#b78d4a" class="has-inline-color">Switch関数</span></strong>や<strong><span style="color:#b78d4a" class="has-inline-color">Select Caseステートメント</span></strong>がありますが、これらの違いや記述方法を紹介します。<br>C言語やJAVA言語でのswitch文との比較もしてますので、そちらも良かったらどうぞ♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Switch関数</a></li><li><a href="#toc2" tabindex="0">Select Caseステートメント</a></li><li><a href="#toc3" tabindex="0">参考（C言語のswitch文との比較）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Switch関数</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">Switch関数は、ある式（expr）を評価し、Trueであれば値や式（value）を返します。</span></strong></p>



<p>構文については以下となります。</p>



<figure class="wp-block-table"><table><tbody><tr><td>Switch(expr_1,value_1,[expr_2,value_2…,[expr_n,value_n]))<br>expr ：必須。評価する式を指定<br>value：必須。式がTrueの場合に返される値または式</td></tr></tbody></table></figure>



<p>記述例として、以下を用意しました。<br>変数の値と特定の値が一致すれば、メッセージを返し、イミディエイトウィンドウに表示します。</p>



<pre class="wp-block-code basic"><code>' PrintImmediate
' イミディエイトウィンドウにメッセージを表示
Sub PrintImmediate()
    
    Dim sMsg As String
    sMsg = GetMsg_Switch(2)
    
    Debug.Print sMsg
    
End Sub</code></pre>



<pre class="wp-block-code basic"><code>' GetMsg_Switch(Integer)
' Switch関数を使ってメッセージを取得
Function GetMsg_Switch(iMsgCase As Integer)

    GetMsg_Switch = Switch(iMsgCase = 1, "正常１", iMsgCase = 2, "正常２")

End Function</code></pre>



<p>結果は、「正常２」と表示されます。</p>



<p>Switch関数を使っていく上で知っておきたいポイントは以下になります。<br>（例については上記の記述例を元にしています。）<br><strong><span style="color:#b78d4a" class="has-inline-color">・Switch関数を変数に代入しないとコンパイルエラーとなる</span></strong><br>例）○GetMsg_Switch = Switch(iMsgCase = 1, &#8220;正常１&#8221;, iMsgCase = 2, &#8220;正常２&#8221;)<br>　　×Switch(iMsgCase = 1, &#8220;正常１&#8221;, iMsgCase = 2, &#8220;正常２&#8221;)<br><strong><span style="color:#b78d4a" class="has-inline-color">・全ての式を評価するため、除算エラー等が起きる式には要注意</span></strong><br>例）iMsgCase = 1で、<br>　　GetMsg_Switch = Switch(iMsgCase = 1, &#8220;正常１&#8221;, iMsgCase = 2, &#8220;正常２&#8221;, iMsgCase = 3, 5 / 0)<br>　　といったコードの場合、「iMsgCase = 3, 5 / 0」部分も評価し除算エラーとなります。<br><strong><span style="color:#b78d4a" class="has-inline-color">・式がFalseだった場合、Nullを返す</span></strong><br>例）iMsgCaseが3の場合、Nullを変数に代入しようとするため、エラーが起きます。</p>



<p>こういったマイナス要素があるため、私は次項の「Select Caseステートメント」がおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc2">Select Caseステートメント</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">Select Caseステートメントは、ある変数の値（testexpression）を複数の値（expressionlist-n）と比較し、一致していれば特定の処理（statements-n）を行います。</span></strong></p>



<p>構文については以下となります。</p>



<figure class="wp-block-table"><table><tbody><tr><td>Select Case testexpression<br>[ Case expressionlist-n [ statements-n ]]<br>[ Case Else [ elsestatements ]]<br>End Select<br><br>testexpression：必須。 任意の変数を指定<br>expressionlist-n：省略可能。Caseがある場合は必須<br>statements-n：省略可能。値が一致していた場合実行される処理<br>elsestatements 省略可能。値が一致しない場合に実行される処理</td></tr></tbody></table></figure>



<p>記述例として、以下を用意しました。<br>変数の値と特定の値が一致すれば、メッセージを返し、イミディエイトウィンドウに表示します。</p>



<pre class="wp-block-code"><code>' PrintImmediate
' イミディエイトウィンドウにメッセージを表示
Sub PrintImmediate()
    
    Dim sMsg As String
    sMsg = GetMsg_SelectCase(2)
    
    Debug.Print sMsg
    
End Sub</code></pre>



<pre class="wp-block-code"><code>' GetMsg_SelectCase(Integer)
' SelectCaseステートメントを使ってメッセージを取得
Function GetMsg_SelectCase(iMsgCase As Integer)

       
    Select Case iMsgCase
    Case 1
        GetMsg_SelectCase = "正常１"
    Case 2
        GetMsg_SelectCase = "正常２"
    Case Else
        GetMsg_SelectCase = "異常"
    End Select
        

End Function</code></pre>



<p>結果は、「正常２」と表示されます。<br>もし、sMsg = GetMsg_SelectCase(3)だった場合は、「異常」と表示されます。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">変数に想定外の値が入っていても、Case Elseがあるためエラーを出さずに対応できます。</span></strong></p>



<h2 class="wp-block-heading"><span id="toc3">参考（C言語のswitch文との比較）</span></h2>



<p>参考になりますが、C言語のswitch文は以下のような書き方をします。</p>



<pre class="wp-block-code"><code>int iMsgCase = 2;

switch(iMsgCase){
  case 1:
    printf("正常１¥n");
    break;
  case iMsgCase:
    printf("正常２¥n");
    break;
  default:
    printf("異常¥n");
}</code></pre>



<p>記述内容はほぼSelect Caseステートメントで、内容もほぼ同等の性能です。<br>逆にSwitch関数とは、名前は似てますが内容は似てません。</p>



<p>以上、今回はSwitch関数やSelect Caseステートメントについて紹介しました。<br>両者比較すると、<strong><span style="color:#b78d4a" class="has-inline-color">マイナスポイントの多いSwitch関数を使うよりは、Select Caseステートメントを使った方がよい</span></strong>のかなと思います。</p>



<p>Switch関数の強みは条件分岐を1行で書けるところかな？と当初考えましたが、いざコードを書いてみると1行に条件を詰め込むのは逆に読みにくいかもと感じました。。</p>



<p>以下まとめです。</p>



<figure class="wp-block-table"><table><tbody><tr><td>・個人差あるかもしれませんが性能は、<br>　Select Caseステートメント＞＞＞Switch関数<br>・C言語のswitch文とVBAのSwitch関数は似てるようで似てない<br>　　　　　　　　　　VBAでほぼ同等の性能はSelect Caseステートメント</td></tr></tbody></table></figure>



<p>本記事で参考にさせていただいたサイト：<br><a class="link" href="https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/switch-function">Microsoft Doc：Switch 関数</a><br><a class="link" href="https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement">Microsoft Doc：Select Case ステートメント</a></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/vba/2344/">【VBA】Switch関数とSelect Caseステートメント【違いや記述方法を簡単に解説】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/vba/2344/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-20" checked><label class="toc-title" for="toc-checkbox-20">目次</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-22" checked><label class="toc-title" for="toc-checkbox-22">目次</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-24" checked><label class="toc-title" for="toc-checkbox-24">目次</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-26" checked><label class="toc-title" for="toc-checkbox-26">目次</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>
		<item>
		<title>【Access】無作為抽出（ランダム・サンプリング）[Rnd,VBA他]</title>
		<link>https://nyanblog2222.com/programming/899/</link>
					<comments>https://nyanblog2222.com/programming/899/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Mon, 01 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Rnd関数]]></category>
		<category><![CDATA[無作為抽出]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=899</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/32.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/32.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回は、Access無作為抽出の方法をいくつかご紹介します。 無作為抽出とは、ある母集団から、ランダム（無作為）にサンプルを抽出する方法です。使う状況でいえば、例えば企業の市場リサーチを目的としたアンケート等がありますね [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/899/">【Access】無作為抽出（ランダム・サンプリング）[Rnd,VBA他]</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/32.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/32.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/32-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回は、Access無作為抽出の方法をいくつかご紹介します。</p>



<p>無作為抽出とは、<strong><span style="color:#b78d4a" class="has-inline-color">ある母集団から、ランダム（無作為）にサンプルを抽出する方法</span></strong>です。<br>使う状況でいえば、例えば企業の市場リサーチを目的としたアンケート等がありますね！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-28" checked><label class="toc-title" for="toc-checkbox-28">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Rnd関数を使った方法</a><ol><li><a href="#toc2" tabindex="0">クエリから引数なしで呼び出す（失敗例）</a></li><li><a href="#toc3" tabindex="0">方法１：Rnd関数引数あり、RandomizeのみVBA</a></li><li><a href="#toc4" tabindex="0">方法２：VBAで一括ランダム値挿入（マクロ実行）</a></li></ol></li><li><a href="#toc5" tabindex="0">テーブル定義のオートナンバー型（ランダム）を使った方法</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Rnd関数を使った方法</span></h2>



<p>Rnd関数は<strong><span style="color:#b78d4a" class="has-inline-color">「Rnd(引数)」で呼び出し、0以上1未満の単精度浮動小数点型の乱数（疑似乱数）を返します。</span></strong>今回はこのRnd関数を使用してランダム値を生成し、そしてランダム値を使って並びかえ上位から件数分抜き出し、無作為抽出を実現します。</p>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>・Rnd([引数])<br>引数&lt;0：常に同じ数値をシード値として使用します。<br>引数&gt;0：擬似乱数シーケンスの次の番号。<br>引数=0：最近生成された乱数。<br>省略　：擬似乱数シーケンスの次の番号。<br>※乱数ジェネレーターを初期化するには、<span style="color:#b78d4a" class="has-inline-color"><strong>Rnd</strong>&nbsp;</span>を呼び出す前に、引数を指定せずに&nbsp;<span style="color:#b78d4a" class="has-inline-color"><strong>Randomize</strong>&nbsp;</span>ステートメントを使用します。</p><cite>引用：<a class="link" href="https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/rnd-function">Rnd 関数 (Visual Basic for Applications) | Microsoft Docs</a></cite></blockquote>
</div>
</div>



<h3 class="wp-block-heading"><span id="toc2">クエリから引数なしで呼び出す（失敗例）</span></h3>



<p>まず<strong><span style="color:#b78d4a" class="has-inline-color">Rnd関数を使った失敗例</span></strong>からです。<br>単純にクエリでRnd関数を引数なしで呼び出せば無作為抽出できそうではありますが……。</p>



<p>テーブル情報</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="206" height="255" src="https://nyanblog2222.com/wp-content/uploads/2020/05/1-min.png" alt="テーブル情報" class="wp-image-1008"/></figure>



<p>クエリ内容<br>・下部の赤枠でRnd関数を呼び出し、右上の赤枠部分で上位25件を抽出</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="723" height="423" src="https://nyanblog2222.com/wp-content/uploads/2020/05/2-min.png" alt="クエリ内容" class="wp-image-1009" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/2-min.png 723w, https://nyanblog2222.com/wp-content/uploads/2020/05/2-min-300x176.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>



<p>結果</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="353" height="243" src="https://nyanblog2222.com/wp-content/uploads/2020/05/3-min.png" alt="結果" class="wp-image-1010" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/3-min.png 353w, https://nyanblog2222.com/wp-content/uploads/2020/05/3-min-300x207.png 300w" sizes="auto, (max-width: 353px) 100vw, 353px" /></figure>



<p>このように<strong><span style="color:#b78d4a" class="has-inline-color">全レコードに同じ乱数</span></strong>が入ってしまいます。値がすべて同じなので上位25件ではなく1000件すべてが抽出されてしまっていますね。<br>これはAccessのクエリ最適化の仕様で、<strong><span style="color:#b78d4a" class="has-inline-color">引数なしで関数を呼び出した場合、一度しか実行してくれない</span></strong>ためです（引数1など固定値でもNG）。<br>また、<strong><span style="color:#b78d4a" class="has-inline-color">Randomizeを実行していないため、乱数ジェネレーター（乱数表）が初期化されません</span></strong>。そのため、もう一度Accessを開きなおし同じクエリを実行した場合、同じ結果になってしまいます。</p>



<p>よって上記をふまえ、以下の方法をご紹介します。</p>



<h3 class="wp-block-heading"><span id="toc3">方法１：Rnd関数引数あり、RandomizeのみVBA</span></h3>



<p>先ほどの失敗例を踏まえ、<br><strong><span style="color:#b78d4a" class="has-inline-color">・Rnd関数に引数を与えることでクエリ最適化を避ける</span><span class="has-inline-color has-pale-pink-color"><br></span><span style="color:#b78d4a" class="has-inline-color">・Randomizeを実行し、乱数表を初期化する</span></strong><br>　こちらは逆に１度呼び出されればいいため、クエリ最適化を利用する<br>　（何度も呼び出されると件数が多い場合負荷がかかる）<br>を考慮し、作成しました。</p>



<p>テーブル情報</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="206" height="255" src="https://nyanblog2222.com/wp-content/uploads/2020/05/1-min-1.png" alt="テーブル情報" class="wp-image-1066"/></figure>



<p>クエリ内容<br>・Rnd([社員NO])でランダム値を各レコードに設定<br>・MyRandomize()で初期化<br>　抽出条件（Is Null）を加えることで、表示を消しても関数呼び出しができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="519" height="484" src="https://nyanblog2222.com/wp-content/uploads/2020/05/6-min.png" alt="クエリ内容" class="wp-image-1058" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/6-min.png 519w, https://nyanblog2222.com/wp-content/uploads/2020/05/6-min-300x280.png 300w" sizes="auto, (max-width: 519px) 100vw, 519px" /></figure>



<p>VBA：乱数表初期化</p>



<pre class="wp-block-code basic"><code>' MyRandomize()
' 乱数ジェネレータ初期化関数
Public Function MyRandomize()
    Randomize
End Function</code></pre>



<p>結果</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="294" height="552" src="https://nyanblog2222.com/wp-content/uploads/2020/05/7-min.png" alt="結果" class="wp-image-1059" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/7-min.png 294w, https://nyanblog2222.com/wp-content/uploads/2020/05/7-min-160x300.png 160w" sizes="auto, (max-width: 294px) 100vw, 294px" /></figure>



<p>正常に無作為抽出ができました。<br>この方法をとる場合は、<strong><span style="color:#b78d4a" class="has-inline-color">Randomizeの呼び出し漏れに注意</span></strong>です。レコード件数が少なく処理が遅くなってもよいということであれば、ランダム関数を呼び出す定義関数を作り、その中で<strong><span style="color:#b78d4a" class="has-inline-color">Randomize</span></strong>を呼び出してもいいかもしれませんね。</p>



<h3 class="wp-block-heading"><span id="toc4">方法２：VBAで一括ランダム値挿入（マクロ実行）</span></h3>



<p>次に、クエリでRnd関数を呼び出さず、<strong><span style="color:#b78d4a" class="has-inline-color">マクロで定義関数を呼び出し、その定義関数内でRandomize＋Rnd関数を呼び出す</span></strong>方法です。<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/access/554/" title="【Access】連番の振り方【Dcount以外も紹介】" 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/31-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/31-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Access】連番の振り方【Dcount以外も紹介】</div><div class="blogcard-snippet internal-blogcard-snippet">Accessで連番の振り方を４つ紹介します。①EXCELから連番をコピペする②テーブル定義でオートナンバー型を使う③クエリでDcount関数を使う④マクロ（VBA）で連番用関数を作成する。…Dcount関数の処理速度の遅さに悩んでませんか？連番付番で高速処理したい方は必見です♪</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.05.15</div></div></div></div></a>
</div></figure>



<p><br>テーブル情報<br>・連番とランダム値項目を用意</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="312" height="238" src="https://nyanblog2222.com/wp-content/uploads/2020/05/17-min.png" alt="テーブル情報" class="wp-image-1061" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/17-min.png 312w, https://nyanblog2222.com/wp-content/uploads/2020/05/17-min-300x229.png 300w" sizes="auto, (max-width: 312px) 100vw, 312px" /></figure>



<p>クエリ内容</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="512" height="415" src="https://nyanblog2222.com/wp-content/uploads/2020/05/8-min.png" alt="クエリ内容" class="wp-image-1060" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/8-min.png 512w, https://nyanblog2222.com/wp-content/uploads/2020/05/8-min-300x243.png 300w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>



<p>VBA：ランダム数セット<br>・Randomizeで初期化<br>・Loopでランダム値を各レコードに設定</p>



<pre class="wp-block-code basic"><code>' SetRandom(String,String)
' ランダム値をセット
' P1:テーブル名 or クエリ名
' P2:ランダム値項目名
Public Function SetRandom(TargetName As String, TargetField As String)
    
    ' 乱数ジェネレータを初期化
    Randomize
    
    Dim rsTarget As Recordset
    Set rsTarget = CurrentDb.OpenRecordset(TargetName, dbOpenDynaset)
    
    Do Until rsTarget.EOF
        rsTarget.Edit
        rsTarget.Fields(TargetField) = Rnd()
        rsTarget.Update
        rsTarget.MoveNext
    Loop
End Function</code></pre>



<p>結果</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="470" height="553" src="https://nyanblog2222.com/wp-content/uploads/2020/05/11-min.png" alt="結果" class="wp-image-1062" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/11-min.png 470w, https://nyanblog2222.com/wp-content/uploads/2020/05/11-min-255x300.png 255w" sizes="auto, (max-width: 470px) 100vw, 470px" /></figure>



<p>正常に無作為抽出ができました。連番もついてますね。<br>この方法だと<strong><span style="color:#b78d4a" class="has-inline-color">確実にRandomizeを呼び出す</span></strong>ので、引き継ぎの際もわかりやすいかもしれませんね。ただマクロを使い慣れていないユーザもいるでしょうから、クエリだけでできないところがデメリットです。</p>



<h2 class="wp-block-heading"><span id="toc5">テーブル定義のオートナンバー型（ランダム）を使った方法</span></h2>



<p>あまりおすすめしませんが、Rnd関数を使わず、<strong><span style="color:#b78d4a" class="has-inline-color">オートナンバー型でランダム値をセット</span></strong>することもできます。</p>



<p>テーブル１（元テーブル）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="206" height="255" src="https://nyanblog2222.com/wp-content/uploads/2020/05/1-min-2.png" alt="テーブル１（元テーブル）" class="wp-image-1067"/></figure>



<p>クエリ１（追加クエリ）<br>・後述のテーブル２にレコードを追加</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="460" height="302" src="https://nyanblog2222.com/wp-content/uploads/2020/05/13-min.png" alt="クエリ１（追加クエリ）" class="wp-image-1064" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/13-min.png 460w, https://nyanblog2222.com/wp-content/uploads/2020/05/13-min-300x197.png 300w" sizes="auto, (max-width: 460px) 100vw, 460px" /></figure>



<p>テーブル２<br>・オートナンバー型のランダム値項目を設定しておく</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="364" height="271" src="https://nyanblog2222.com/wp-content/uploads/2020/05/12-min.png" alt="テーブル２" class="wp-image-1063" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/12-min.png 364w, https://nyanblog2222.com/wp-content/uploads/2020/05/12-min-300x223.png 300w" sizes="auto, (max-width: 364px) 100vw, 364px" /></figure>



<p>クエリ１実行結果<br>この時点で連番が振られています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="241" height="410" src="https://nyanblog2222.com/wp-content/uploads/2020/05/14-min.png" alt="クエリ１実行結果" class="wp-image-1070" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/14-min.png 241w, https://nyanblog2222.com/wp-content/uploads/2020/05/14-min-176x300.png 176w" sizes="auto, (max-width: 241px) 100vw, 241px" /></figure>



<p>クエリ２（件数分抽出）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="465" height="353" src="https://nyanblog2222.com/wp-content/uploads/2020/05/15-min.png" alt="クエリ２（件数分抽出）" class="wp-image-1068" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/15-min.png 465w, https://nyanblog2222.com/wp-content/uploads/2020/05/15-min-300x228.png 300w" sizes="auto, (max-width: 465px) 100vw, 465px" /></figure>



<p>結果</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="220" height="527" src="https://nyanblog2222.com/wp-content/uploads/2020/05/16-min-1.png" alt="結果" class="wp-image-1071" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/16-min-1.png 220w, https://nyanblog2222.com/wp-content/uploads/2020/05/16-min-1-125x300.png 125w" sizes="auto, (max-width: 220px) 100vw, 220px" /></figure>



<p>正常に無作為抽出ができました。<br><strong><span style="color:#b78d4a" class="has-inline-color">VBAやマクロを使わない</span></strong>ということがメリットですが、無理やり組んだ印象が強く、個人的には分かりづらいかなと思います。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/899/">【Access】無作為抽出（ランダム・サンプリング）[Rnd,VBA他]</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/899/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Access】連番の振り方【Dcount以外も紹介】</title>
		<link>https://nyanblog2222.com/programming/554/</link>
					<comments>https://nyanblog2222.com/programming/554/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 15 May 2020 04:34:05 +0000</pubDate>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=554</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/31.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/31.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回は、Accessで連番の振り方をいくつかご紹介します。 大容量レコードに高速付番したい方は、「４．VBAで連番用関数を作成する」をご確認ください♪ 目次 EXCELから連番をコピペするテーブル定義でオートナンバー型を [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/554/">【Access】連番の振り方【Dcount以外も紹介】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/31.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/31.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/31-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p><p>今回は、<strong><span style="color: #b78d4a;" class="has-inline-color">Accessで連番の振り方</span></strong>をいくつかご紹介します。</p>
<p>大容量レコードに高速付番したい方は、<br>「４．VBAで連番用関数を作成する」をご確認ください♪</p></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-30" checked><label class="toc-title" for="toc-checkbox-30">目次</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">テーブル定義でオートナンバー型を使う</a></li><li><a href="#toc3" tabindex="0">Dcount関数を使う</a></li><li><a href="#toc4" tabindex="0">VBAで連番用関数を作成する</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">EXCELから連番をコピペする</span></h2>



<p>まず初めに非常にアナログですが、簡単で確実な方法です。<br>後述するクエリ（DCount関数）で連番を振る方法では件数が多い場合に時間がかかりすぎるため、あえてこのような方法をとっている方もいます。</p>



<p>説明するまでもないかもしれませんが、このように連番用にEXCELを作り、<br>コピーしてAccessのテーブルに貼り付けます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="179" height="259" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_19-50-46_No-00.png" alt="Excel連番" class="wp-image-576"/></figure>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">メリット：</span></strong><br>・Accessの知識が必要ないため、<strong><span style="color: #b78d4a;" class="has-inline-color">不慣れでも連番を振る</span></strong>ことができる。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">クエリの順番通り</span></strong>に連番が振れる。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">デメリット：</span></strong><br>・<strong><span style="color: #b78d4a;" class="has-inline-color">手作業のためミス</span></strong>が発生する可能性がある。<br>・テーブル内容に変更があった場合、対応できない。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">使用用途：</span></strong><br><strong><span style="color: #b78d4a;" class="has-inline-color">一度しか処理せず、</span></strong>再度連番を振る必要ない場合　等</p>



<p>なお、件数が多すぎるとお使いのパソコンやAccessのバージョンによってはペーストする際にエラーがでるようですので、ご注意ください。</p>



<h2 class="wp-block-heading"><span id="toc2">テーブル定義でオートナンバー型を使う</span></h2>



<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="352" height="440" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-17-7_No-00-1.png" alt="Access連番　オートナンバー" class="wp-image-558" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-17-7_No-00-1.png 352w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-17-7_No-00-1-240x300.png 240w" sizes="auto, (max-width: 352px) 100vw, 352px" /></figure>



<p>このようにデータ型を「オートナンバー型」にするだけで、入力する際、以下のように自動で連番が入力されていきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="306" height="148" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_11-52-10_No-00.png" alt="Access連番　オートナンバー" class="wp-image-557" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_11-52-10_No-00.png 306w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_11-52-10_No-00-300x145.png 300w" sizes="auto, (max-width: 306px) 100vw, 306px" /></figure>



<p>オートナンバー型を使うメリットデメリットですが、以下が考えられます。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">メリット：</span></strong><br>・手軽で分かりやすい。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">一意（ユニーク）な連番</span></strong>が振られるため、万が一にも重複の心配がない。<br>・手動で変更できないため、<strong><span style="color: #b78d4a;" class="has-inline-color">うっかり違う値に変更してしまうことがない</span></strong>。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">デメリット：</span></strong><br>・連番が振られた後は<strong><span style="color: #b78d4a;" class="has-inline-color">変更ができない</span></strong>。<br>・レコードを削除した際に、<strong><span style="color: #b78d4a;" class="has-inline-color">抜け番が発生</span></strong>する。<br>・レコード追加時にしか連番が振れない。</p>



<p>この中でも特に、デメリットの<strong><span style="color: #b78d4a;" class="has-inline-color">一度削除すると抜け番が発生するところ</span></strong>が注意点かと思います。<br>例えば以下のように、レコードを一度入力した後、間違えに気づき修正した場合、抜け番が発生してしまいます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="317" height="267" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-4-35_No-00.png" alt="Access連番　オートナンバー" class="wp-image-559" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-4-35_No-00.png 317w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-4-35_No-00-300x253.png 300w" sizes="auto, (max-width: 317px) 100vw, 317px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="304" height="124" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-5-31_No-00-1.png" alt="Access連番　オートナンバー" class="wp-image-561" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-5-31_No-00-1.png 304w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-5-31_No-00-1-300x122.png 300w" sizes="auto, (max-width: 304px) 100vw, 304px" /></figure>



<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="437" height="21" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-6-59_No-00.png" alt="Access連番　オートナンバー" class="wp-image-562" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-6-59_No-00.png 437w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_14-6-59_No-00-300x14.png 300w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>



<p>そんな良くも悪くも融通が利かないオートナンバー型ですが、以下のような使用用途が考えられます。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">使用用途：</span></strong><br>・絶対に連番が変わってしまうのを避けたい場合<br>・欠番ができても問題ない場合　等<br>例）<strong><span style="color: #b78d4a;" class="has-inline-color">Access内部で使用するデータ紐付け用の主キーID</span></strong></p>



<p>なお、テーブルをデザインビューで開き、項目の「切り取り」→同じ箇所に「行の挿入」→「貼り付け」をすることで、連番の振り直し自体は可能です。<br>※１から連番が再度振られるため、連番を振りなおしたことによる影響範囲を検討の上、行ってください。</p>



<h2 class="wp-block-heading"><span id="toc3">Dcount関数を使う</span></h2>



<p>クエリで連番を振る際に使用するのが<strong><span style="color: #b78d4a;" class="has-inline-color">DCount関数を使った</span></strong>方法です。<br>DCount関数は元々<strong><span style="color: #b78d4a;" class="has-inline-color">指定した範囲のレコード数をカウントする関数</span></strong>ですが、以下のように指定することで、連番を振ることもできます。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">DCount(&#8220;*&#8221;,&#8221;テーブル名&#8221;,&#8221;[基準項目]&lt;=&#8221; &amp; [テーブル名]![基準項目])</span></strong></p>



<p>指定内容の説明です。<br>引数１：レコード数をカウント<br>引数２：テーブル名またはクエリ名<br>引数３：条件。現在のレコードの[基準項目]以下の[基準項目]の数をカウント</p>



<p>これだけでは分かりにくいので、例を使って見てみましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="377" height="96" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_15-30-9_No-00.png" alt="Access連番　DCount関数" class="wp-image-563" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_15-30-9_No-00.png 377w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_15-30-9_No-00-300x76.png 300w" sizes="auto, (max-width: 377px) 100vw, 377px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="206" height="132" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_16-25-42_No-00.png" alt="Access連番　DCount関数" class="wp-image-564"/></figure>



<p>まず、基準項目を「社員NO」として連番を振るため、データ型は比較可能な「数値型」としています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="364" height="263" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_16-26-54_No-00.png" alt="Access連番　DCount関数" class="wp-image-565" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_16-26-54_No-00.png 364w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_16-26-54_No-00-300x217.png 300w" sizes="auto, (max-width: 364px) 100vw, 364px" /></figure>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">連番: DCount(&#8220;*&#8221;,&#8221;T_クエリ&#8221;,&#8221;[社員NO]&lt;=&#8221; &amp; [T_クエリ]![社員NO])</span></strong></p>



<p>クエリはこのようにDCount関数を使い、設定しました。</p>



<p>結果は以下のとおりです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="296" height="106" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_16-33-28_No-00.png" alt="" class="wp-image-567"/></figure>



<p>Dcount関数を使うメリットデメリット・使用用途ですが、以下が考えられます。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">メリット：</span></strong><br>・テーブル内容に変更があっても、自動で値が振られ<strong><span style="color: #b78d4a;" class="has-inline-color">抜け番が発生しない</span></strong>。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">一意（ユニーク）な連番が振られる</span></strong>ため、重複の心配がない。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">デメリット：</span></strong><br>・元々Dcountは別用途で作られた関数のため、不慣れなユーザには判読しづらい。<br>・基準項目（数値項目等、比較可能な項目）が必要。<br>・氏名順等、<strong><span style="color: #b78d4a;" class="has-inline-color">特別な並び順にしたい場合、連番を振ることができない</span></strong>。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">レコード件数が多いと、とにかく重い！</span></strong><br>（レコードごとに毎度、基準項目以下のレコードをカウントしにいくため）</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">使用用途：</span></strong><br>・<strong><span style="color: #b78d4a;" class="has-inline-color">データ入力後に連番が振りたい</span></strong>場合　等</p>



<h2 class="wp-block-heading"><span id="toc4">VBAで連番用関数を作成する</span></h2>



<p>少し難易度は上がりますが、<strong><span style="color: #b78d4a;" class="has-inline-color">VBAで連番用関数を作成し、連番を振る</span></strong>方法です。<br>VBAを使用し、ユーザ定義関数を作成し、マクロから呼び出します。</p>



<p>VBAについては以下を作成しましたので、コピーしてお使いください。</p>



<pre class="wp-block-code"><code>' InsertRenban(String,String)
' 連番挿入関数
' P1:クエリ名（テーブル名でも可能だが、非推奨）
' P2:連番用項目名
Public Function <strong>InsertRenban</strong>(TargetName As String, TargetField As String)
    Dim rsTarget As Recordset
    Set rsTarget = CurrentDb.OpenRecordset(TargetName, dbOpenDynaset)
    
    Dim iRecordCnt As Long
    
    'レコード毎に"+1"し、終端まで読み込み
    Do Until rsTarget.EOF
        lRecordCnt = lRecordCnt + 1
        
        rsTarget.Edit
        rsTarget.Fields(TargetField) = lRecordCnt
        rsTarget.Update
        rsTarget.MoveNext
    Loop
End Function</code></pre>



<p>では、例を使ってご紹介します。<br>まずテーブルは以下です。新しく連番をつける場合は、テーブル定義で「連番」項目を追加してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="361" height="98" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_18-49-58_No-00.png" alt="VBA" class="wp-image-570" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_18-49-58_No-00.png 361w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_18-49-58_No-00-300x81.png 300w" sizes="auto, (max-width: 361px) 100vw, 361px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="295" height="139" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_18-50-7_No-00.png" alt="VBA" class="wp-image-571"/></figure>



<p>次にクエリを用意し、並び順を確定させます。<br><strong><span style="color: #b78d4a;" class="has-inline-color">※テーブルの順はAccessが独自にソートしているだけなので、今回のVBAを使い連番を振る場合、この工程が重要です。</span></strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="434" height="329" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-16_9-23-36_No-00-1.png" alt="" class="wp-image-588" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-16_9-23-36_No-00-1.png 434w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-16_9-23-36_No-00-1-300x227.png 300w" sizes="auto, (max-width: 434px) 100vw, 434px" /></figure>



<p>実行マクロについては、以下としました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="357" height="92" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_19-37-29_No-00.png" alt="VBA" class="wp-image-575" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_19-37-29_No-00.png 357w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_19-37-29_No-00-300x77.png 300w" sizes="auto, (max-width: 357px) 100vw, 357px" /></figure>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">InsertRenban(&#8220;Q_定義関数&#8221;,&#8221;連番&#8221;)</span></strong></p>



<p>実行結果は以下となりました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="280" height="115" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_NoName_2020-5-15_18-51-16_No-00.png" alt="VBA" class="wp-image-573"/></figure>



<p>メリットデメリット・使用用途については以下となります。<br>個人的には、クエリを使うのであればこちらをおすすめします。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">メリット：</span></strong><br>・テーブル内容に変更があっても、自動で値が振られ<strong><span style="color: #b78d4a;" class="has-inline-color">抜け番が発生しない</span></strong>。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">一意（ユニーク）な連番が振られる</span></strong>ため、重複の心配がない。<br>・<strong><span style="color: #b78d4a;" class="has-inline-color">クエリに比べ</span></strong>、レコード件数が多くても<strong><span style="color: #b78d4a;" class="has-inline-color">処理が速い</span></strong>！<br>・連番はクエリの並び順に左右されるため、基準項目は不要</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">デメリット：</span></strong><br>・マクロ、VBAを使うのでAccess初心者には取っつきにくい。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">使用用途：</span></strong><br>・<strong><span style="color: #b78d4a;" class="has-inline-color">データ入力後に連番が振りたい</span></strong>場合　等</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/554/">【Access】連番の振り方【Dcount以外も紹介】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/554/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
