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

<channel>
	<title>異常  |  独学エクセル塾</title>
	<atom:link href="https://dokugakuexcel.com/tag/%E7%95%B0%E5%B8%B8/feed/" rel="self" type="application/rss+xml" />
	<link>https://dokugakuexcel.com</link>
	<description>初心者から中級者までシステム・関数・VBAを伝授します</description>
	<lastBuildDate>Mon, 17 Oct 2022 14:00:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://dokugakuexcel.com/wp-content/uploads/2021/06/cropped-cropped-image-66-1-32x32.jpg</url>
	<title>異常  |  独学エクセル塾</title>
	<link>https://dokugakuexcel.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">194648711</site>	<item>
		<title>【マクロVBA】「指定された値は境界を超えています。」の実行時エラーの原因と対策について</title>
		<link>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e3%80%8c%e6%8c%87%e5%ae%9a%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%81%af%e5%a2%83%e7%95%8c%e3%82%92%e8%b6%85%e3%81%88%e3%81%a6%e3%81%84%e3%81%be/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%259e%25e3%2582%25af%25e3%2583%25advba%25e3%2580%2591%25e3%2580%258c%25e6%258c%2587%25e5%25ae%259a%25e3%2581%2595%25e3%2582%258c%25e3%2581%259f%25e5%2580%25a4%25e3%2581%25af%25e5%25a2%2583%25e7%2595%258c%25e3%2582%2592%25e8%25b6%2585%25e3%2581%2588%25e3%2581%25a6%25e3%2581%2584%25e3%2581%25be</link>
					<comments>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e3%80%8c%e6%8c%87%e5%ae%9a%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%81%af%e5%a2%83%e7%95%8c%e3%82%92%e8%b6%85%e3%81%88%e3%81%a6%e3%81%84%e3%81%be/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Wed, 28 Sep 2022 14:18:43 +0000</pubDate>
				<category><![CDATA[エラー対策]]></category>
		<category><![CDATA[マクロVBA応用・便利技]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[異常]]></category>
		<category><![CDATA[指定された値は境界を越えています]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=3544</guid>

					<description><![CDATA[エクセルのマクロVBAのプログラムを作ったことがある方は誰もが経験があるエラーですが、 皆さんも悩んでいるのではないでしょうか。プログラムを作った人は発生したエラーについて理解・把握できますが作ってない方はエラーが発生し [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">エクセルのマクロVBAのプログラムを作ったことがある方は誰もが経験があるエラーですが、</p>



<p class="wp-block-paragraph">皆さんも悩んでいるのではないでしょうか。<br>プログラムを作った人は発生したエラーについて理解・把握できますが作ってない方はエラーが発生したらすぐに原因を理解するのは難しいです。</p>



<p class="wp-block-paragraph">その中でも今回は<strong><span class="marker-under">「実行時エラー1004」の中の「指定された値は境界を超えています」</span></strong><br>の<strong><span class="marker-under">発生する原因とエラーの対策</span></strong>について説明したいと思います。</p>



<p class="wp-block-paragraph">同様のエラーが発生した場合には是非参考にしてみてください。<br>それでは見ていきましょう。</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">&#x2b1b;︎「指定された値は境界を超えています」のエラーの原因について</a></li><li><a href="#toc2" tabindex="0">&#x2b1b;︎原因①:色を変える際のSchemeColorの指定に不備がある</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">&#x2b1b;︎原因②:保護したシートへの写真・図貼り付け</a><ol><li><a href="#toc6" tabindex="0">・原因の内容</a></li><li><a href="#toc7" tabindex="0">・対策方法</a></li></ol></li><li><a href="#toc8" tabindex="0">&#x2b1b;︎公式の説明</a></li><li><a href="#toc9" tabindex="0">&#x2b1b;︎まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">&#x2b1b;︎「指定された値は境界を超えています」のエラーの原因について</span></h2>



<p class="wp-block-paragraph">まず、「指定された値は境界を超えています」のエラーが発生する原因から見ていきましょう。</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-97.png" alt="" class="wp-image-3545" width="390" height="193" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-97.png 519w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-97-300x149.png 300w" sizes="(max-width: 390px) 100vw, 390px" /></figure>



<p class="wp-block-paragraph">現在確認できる原因としては下記の通りです。</p>



<pre class="wp-block-verse"><strong><span class="fz-20px">①色を変える際のSchemeColorの指定に不備がある
②保護したシートへの写真・図の貼り付け</span></strong></pre>



<p class="wp-block-paragraph">※確認できている原因を挙げています。<br>上記以外で発生の原因がある場合はコメントしていただけたら幸いです。</p>



<p class="wp-block-paragraph"> </p>



<p class="wp-block-paragraph">では各原因についてみていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc2">&#x2b1b;︎原因①:色を変える際のSchemeColorの指定に不備がある</span></h2>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading"><span id="toc3">・原因の内容</span></h3>



<p class="wp-block-paragraph"><strong><span class="marker-under">SchemeColorとはオブジェクトの配色の色を変更</span></strong>する際に使用します。<br><strong><span class="marker-under">SchemeColorは「<span class="bold-red">1から80</span>」で指定</span></strong>します。</p>



<p class="wp-block-paragraph">では見本を見てみましょう。</p>



<pre class="wp-block-verse">Sub 図に色をつける()
ActiveSheet.Shapes("見本図").Fill.ForeColor.SchemeColor = <span class="bold-red">5</span>
End Sub</pre>



<p class="wp-block-paragraph">見本のプログラムは「見本図」と言う名前をつけた図の<br>色をSchemeColorで変更するプログラムです。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-98.png" alt="" class="wp-image-3546" width="453" height="232" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-98.png 562w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-98-300x154.png 300w" sizes="(max-width: 453px) 100vw, 453px" /></figure>



<p class="wp-block-paragraph">今回は「SchemeColor＝5」で指示しています。<br>では実行してみます。結果はこのようになりました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="305" height="279" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-99.png" alt="" class="wp-image-3547" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-99.png 305w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-99-300x274.png 300w" sizes="(max-width: 305px) 100vw, 305px" /></figure>



<p class="wp-block-paragraph"><strong><span class="marker-under">図が黄色に変化</span></strong>してますね。</p>



<p class="wp-block-paragraph">では<strong>「SchemeColor＝<span class="bold-red">81</span>」</strong>で再度実行したいと思います。<br>プログラムはこちらです。</p>



<pre class="wp-block-verse">Sub 図に色をつける()
ActiveSheet.Shapes("見本図").Fill.ForeColor.SchemeColor = <span class="bold-red">81</span>
End Sub</pre>



<p class="wp-block-paragraph">では実行してみましょう。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-100.png" alt="" class="wp-image-3548" width="370" height="183" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-100.png 519w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-100-300x149.png 300w" sizes="(max-width: 370px) 100vw, 370px" /></figure>



<p class="wp-block-paragraph"><strong><span class="marker-under">「指定された値は境界を超えています」というエラーが発生</span></strong>しました。</p>



<p class="wp-block-paragraph">「SchemeColor」の前提条件として「1から80」となってます。<br>しかし今回は「81」と、<strong><span class="marker-under-red">条件以外の数値</span></strong>であることから<br>「指定された値は境界を超えています」というエラーが発生した仕組みになっています。</p>



<h3 class="wp-block-heading"><span id="toc4">・対策方法</span></h3>



<p class="wp-block-paragraph">こちらの対策は単純です。<br><span class="marker-under-blue">「SchemeColor」を使用する場合は「1から80」までの数値</span>にしてください。</p>



<h2 class="wp-block-heading"><span id="toc5">&#x2b1b;︎原因②:保護したシートへの写真・図貼り付け</span></h2>



<h3 class="wp-block-heading"><span id="toc6">・原因の内容</span></h3>



<p class="wp-block-paragraph">つぎに<strong><span class="marker-under">保護したシートへの写真・図の貼り付け時に発生するパターン</span></strong>を見ていきましょう。</p>



<p class="wp-block-paragraph">見本のプログラムを用意しました。<br>プログラムは下記の通りです。</p>



<pre class="wp-block-verse">Sub 写真の貼り付け()

Set OBJSHAPE = ActiveSheet.Shapes.AddPicture( _
　　　　　　　　  Filename:="<span class="bold-red">C:\検証ファイル</span>\<span class="bold-blue">見本写真.jpg</span>", _
　　　　　　　　  LinkToFile:=False, _
　　　　　　　　  SaveWithDocument:=True, _
　　　　　　　　  Left:=ActiveSheet.Range("E7").Left, _
　　　　　　　　  Top:=ActiveSheet.Range("E7").Top, _
　　　　　　　　  Width:=ActiveSheet.Range("E7").Width, _
　　　　　　　　  Height:=ActiveSheet.Range("E7").Height) '貼り付け
End Sub</pre>



<p class="wp-block-paragraph">プログラムの内容として「<span class="bold-red">Cドライブの検証ファイル</span>」というフォルダに保存してある「<span class="bold-blue">見本写真.jpg</span>」という写真を「E7」に貼り付けるプログラムになっています。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-101.png" alt="" class="wp-image-3549" width="308" height="200" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-101.png 431w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-101-300x195.png 300w" sizes="(max-width: 308px) 100vw, 308px" /></figure>



<p class="wp-block-paragraph">では通常通り実行してみます。<br>結果はこのようになりました。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-102.png" alt="" class="wp-image-3550" width="345" height="228" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-102.png 463w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-102-300x198.png 300w" sizes="(max-width: 345px) 100vw, 345px" /></figure>



<p class="wp-block-paragraph">「E7」に写真を貼り付けれていますね。</p>



<p class="wp-block-paragraph">では本題です。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under">貼り付け先のアクティブシートに保護をかけた状態でプログラムを実行</span></strong>してみます。<br>結果はこのようになりました。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-103.png" alt="" class="wp-image-3551" width="413" height="200" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-103.png 539w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-103-300x145.png 300w" sizes="(max-width: 413px) 100vw, 413px" /></figure>



<p class="wp-block-paragraph">「指定された値は境界を超えています」というエラーが発生しました。</p>



<h3 class="wp-block-heading"><span id="toc7">・対策方法</span></h3>



<p class="wp-block-paragraph">こちらは貼り付け先のシートに保護が掛かっている可能性があるので<br><strong><span class="marker-under-blue">保護を解除して、実行する必要</span></strong>があります。</p>



<p class="wp-block-paragraph">通常通り<strong><span class="marker-under-red">「校閲」</span></strong>タブから<strong><span class="marker-under-red">「シートの保護」</span></strong>状態であるか確認する方法もありますが、<br>シートの保護をプログラムで実行している場合は<strong><span class="marker-under-blue">ActiveSheet.Unprotect</span></strong>で<br>マクロから保護の解除をする方法もあります。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="174" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-104-1024x174.png" alt="" class="wp-image-3552" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-104-1024x174.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-104-300x51.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-104-768x130.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-104.png 1248w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">シートの保護・解除をマクロで行う方法についてはこちらから☟</p>



<p class="wp-block-paragraph"><a href="https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%8a%b2%e3%80%91%e3%82%b7%e3%83%bc%e3%83%88%e3%81%ae%e4%bf%9d%e8%ad%b7%e3%83%bb%e8%a7%a3%e9%99%a4%e5%85%a8%e9%9b%86%ef%bc%81%e3%82%a2%e3%82%af%e3%83%86/">【マクロVBA㊲】シートの保護・解除全集！アクティブ・対象・全シートやパスワードを含めた保護・解除 ► 独学エクセル塾 (dokugakuexcel.com)</a></p>



<p class="wp-block-paragraph">場面に合わせて使い分けてください。</p>



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



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



<p class="wp-block-paragraph"><a href="https://answers.microsoft.com/ja-jp/msoffice/forum/all/%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%A7%E5%9B%B3/4bdc782c-8d15-4cf1-b0e4-4fb09ce70797">マクロで図形の塗りつぶしを行うと 「指定された値は境界を越えています」 のエラーになります &#8211; Microsoft コミュニティ</a></p>



<h2 class="wp-block-heading"><span id="toc9">&#x2b1b;︎まとめ</span></h2>



<p class="wp-block-paragraph">いかがだったでしょうか。<br>「指定された値は境界を超えています」というエラー名だけでは<br>なにが原因か理解しにくいですが<br>本記事を参考にして解決いただけたら嬉しいです。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">是非参考にしてみてください。<br>それでは次回の記事でお会いしましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e3%80%8c%e6%8c%87%e5%ae%9a%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%81%af%e5%a2%83%e7%95%8c%e3%82%92%e8%b6%85%e3%81%88%e3%81%a6%e3%81%84%e3%81%be/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3544</post-id>	</item>
		<item>
		<title>【マクロVBAのエラー対策】エラーが発生したら指定行まで移動！終了までできるエラー処理方法について</title>
		<link>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e5%af%be%e7%ad%96%e3%80%91%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%ab%e8%b2%a0%e3%81%91%e3%81%aa%e3%81%84%e3%83%97%e3%83%ad/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%259e%25e3%2582%25af%25e3%2583%25advba%25e3%2581%25ae%25e3%2582%25a8%25e3%2583%25a9%25e3%2583%25bc%25e5%25af%25be%25e7%25ad%2596%25e3%2580%2591%25e3%2582%25a8%25e3%2583%25a9%25e3%2583%25bc%25e3%2581%25ab%25e8%25b2%25a0%25e3%2581%2591%25e3%2581%25aa%25e3%2581%2584%25e3%2583%2597%25e3%2583%25ad</link>
					<comments>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e5%af%be%e7%ad%96%e3%80%91%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%ab%e8%b2%a0%e3%81%91%e3%81%aa%e3%81%84%e3%83%97%e3%83%ad/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Tue, 26 Oct 2021 11:33:30 +0000</pubDate>
				<category><![CDATA[エラー対策]]></category>
		<category><![CDATA[マクロVBA応用・便利技]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[異常]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=1815</guid>

					<description><![CDATA[エクセルのマクロVBAのプログラムを作ったことがある方は誰もが経験があるエラーですが、皆さんも悩んでいるのではないでしょうか。 プログラムを作った人は発生したエラーについて理解・把握できますが作ってない方はエラーが発生し [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">エクセルのマクロVBAのプログラムを作ったことがある方は誰もが経験がある<br>エラーですが、皆さんも悩んでいるのではないでしょうか。</p>



<p class="wp-block-paragraph">プログラムを作った人は発生したエラーについて理解・把握できますが<br>作ってない方はエラーが発生したらすぐに理解するのは難しいです。</p>



<p class="wp-block-paragraph">さらにVBAを触ったことがない人がシステムを利用してエラーが出ると<br>何を押していいかわかりません。</p>



<p class="wp-block-paragraph">そのためにもプログラムを作成する方はエラーに対応したプログラムを<br>作成する能力を求められます。</p>



<p class="wp-block-paragraph">ぜひ、<strong><span class="marker-under">エラーに強いプログラムを作成</span></strong>できるようにしてみてください。</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">■マクロ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">・②IFを使用して異常値を検出して指定位置に飛ぶ</a></li><li><a href="#toc5" tabindex="0">・③入力規則で入力データを制限する</a></li></ol></li><li><a href="#toc6" tabindex="0">&#x2b1b;︎公式の説明</a></li><li><a href="#toc7" tabindex="0">■まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">■マクロVBAで発生するエラーとは</span></h2>



<p class="wp-block-paragraph">まず発生するエラーについて見てみましょう。<br>下図をご覧ください。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="360" height="182" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-64.png" alt="" class="wp-image-1816" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-64.png 360w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-64-300x152.png 300w" sizes="(max-width: 360px) 100vw, 360px" /></figure>



<p class="wp-block-paragraph">このような異常はプログラムを作ったことがある方は見たことがあるのではないでしょうか。<br>ちなみに<strong><span class="marker-under">終了を押せばプログラムは強制終了</span></strong>します。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under">デバッグを押せばエラーの原因のプログラムの位置で止まってくれます</span></strong>。<br>VBAを知らない方はデバッグを押すと、みたことのない画面が出るため困ってしまいます。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under">ヘルプはマイクロソフト公式のヘルプに飛んでくれます</span></strong>。</p>



<p class="wp-block-paragraph">今回の目的はこの画面が出ないようにプログラミングしていきます。</p>



<h2 class="wp-block-heading"><span id="toc2">■エラーの対応方法</span></h2>



<p class="wp-block-paragraph">今回は下図のようなシステムを見本で作成しました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="777" height="262" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-65.png" alt="" class="wp-image-1817" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-65.png 777w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-65-300x101.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-65-768x259.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></figure>



<p class="wp-block-paragraph">システムとして、身長・体重を打ち込んで更新を押すと<br>8行以降に<span class="marker-under-red">データを蓄積していく</span>シートを用意しました。その際にBMIも算出します。</p>



<p class="wp-block-paragraph">プログラムも見本で載せておきます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub データ集計()</p><p>Dim EndRow As Long<br>Dim Height As Long &#8216;身長<br>Dim Weight As Long &#8216;体重</p><p>EndRow = Cells(7, 2).End(xlDown).Row + 1</p><p>Height = Cells(3, 2)<br>Weight = Cells(3, 3)</p><p>Cells(EndRow, 2) = Height<br>Cells(EndRow, 3) = Weight<br>Cells(EndRow, 4) = Weight / (Height / 100) ^ 2</p><p>Range(&#8220;B3:C3&#8221;).ClearContents</p><p>End Sub</p></blockquote>



<p class="wp-block-paragraph">では、このプログラムを元に説明していきます。</p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading"><span id="toc3">・①対象範囲内でエラーが起きたら指定位置へ飛ぶ</span></h3>



<p class="wp-block-paragraph">まず、<strong><span class="marker-under-red">エラー発生時に指定位置に飛ぶ方法</span></strong>について紹介します。<br>この方法はエラーの根本的な解決方法にはなってませんが<br>エラー画面が発生しない1番手っ取り早い方法です。</p>



<p class="wp-block-paragraph">プログラム構成はこのようになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><span class="bold-red">On Error Goto <span class="bold-blue">任意ラベル</span></span><br>　　・<br>　　・<br>　　・<br>通常プログラム<br>　　・<br>　　・<br>　　・<br>Exit Sub</p><p><span class="bold-blue">任意ラベル</span>：</p><p><span class="bold-green">エラー時の処理</span></p><p>End Sub</p></blockquote>



<p class="wp-block-paragraph">つまり</p>



<p class="wp-block-paragraph">「<span class="bold-red">On Error Goto<span class="bold-blue"> 任意ラベル</span></span>」から「<span class="bold-blue">任意ラベル</span>：」の範囲内で<br>異常があった場合、<span class="bold-green">エラー時の処理</span>まで飛んでくれます。</p>



<p class="wp-block-paragraph">では先ほどのプログラムに織り込んでみましょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub データ集計①織り込み()</p><p>Dim EndRow As Long<br>Dim Height As Long &#8216;身長<br>Dim Weight As Long &#8216;体重</p><p><span class="bold-red">On Error GoTo <span class="bold-blue">エラー1</span></span></p><p>EndRow = Cells(7, 2).End(xlDown).Row + 1</p><p>Height = Cells(3, 2)<br>Weight = Cells(3, 3)</p><p>Cells(EndRow, 2) = Height<br>Cells(EndRow, 3) = Weight<br>Cells(EndRow, 4) = Weight / (Height / 100) ^ 2</p><p>Range(&#8220;B3:C3&#8221;).ClearContents</p><p>Exit Sub</p><p><span class="bold-blue">エラー1</span>:</p><p><span class="bold-green">MsgBox (&#8220;誤った数値が入力されています&#8221;)</span></p><p>End Sub</p></blockquote>



<p class="wp-block-paragraph">図解するとこのようになります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="655" height="379" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-66.png" alt="" class="wp-image-1818" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-66.png 655w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-66-300x174.png 300w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-66-330x190.png 330w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-66-120x68.png 120w" sizes="(max-width: 655px) 100vw, 655px" /></figure>



<p class="wp-block-paragraph">では実際にエラーが出るように更新してみましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="366" height="253" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-67.png" alt="" class="wp-image-1819" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-67.png 366w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-67-300x207.png 300w" sizes="(max-width: 366px) 100vw, 366px" /></figure>



<p class="wp-block-paragraph"><strong><span class="marker-under-blue">身長に間違えて「A」</span></strong>を打ち込んだとします。<br>通常は身長を「Cells(EndRow, 2) = Height」で変数「Height」に格納するのですが<br><strong><span class="marker-under-blue">変数「Height」の型は「Long」なので文字は格納できません</span></strong>。</p>



<p class="wp-block-paragraph">なので通常は下図のような異常が出ます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="401" height="198" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-68.png" alt="" class="wp-image-1820" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-68.png 401w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-68-300x148.png 300w" sizes="(max-width: 401px) 100vw, 401px" /></figure>



<p class="wp-block-paragraph">では改善したプログラムを走らせてみます。<br>結果はこのようになります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="310" height="216" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-69.png" alt="" class="wp-image-1821" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-69.png 310w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-69-300x209.png 300w" sizes="(max-width: 310px) 100vw, 310px" /></figure>



<p class="wp-block-paragraph">エラー処理にプログラムが飛んで、メッセージボックスの<br>「誤った数値が入力されています」が表示されました。<br>この後は<strong>「OK」を押せばプログラムは終わってくれます</strong>。</p>



<p class="wp-block-paragraph">VBAのエラーを表示させたくない場合はプログラムの先頭に「<span class="bold-red">On Error GoTo　<span class="bold-blue">任意ラベル</span></span>」<br>最後に「<span class="bold-blue">任意ラベル</span>：」を置いて<br>そのあとに「<span class="bold-green">MsgBox (&#8220;エラーになりました。見直してください&#8221;）</span>」を入れれば<br>とりあえずVBAの異常は無くなり、メッセージでの出力にすることができました。</p>



<h3 class="wp-block-heading"><span id="toc4">・②IFを使用して異常値を検出して指定位置に飛ぶ</span></h3>



<p class="wp-block-paragraph">今度はIFを使用して<strong><span class="marker-under">異常値を検出し、異常処理行まで飛んでみましょう</span></strong>。<br>この方法は先ほどの型が違うなどのエラーは適応外ですが<br><strong><span class="marker-under">エラーの根本を検出</span></strong>できます。</p>



<p class="wp-block-paragraph">では先ほどの見本を元に進めていきます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="363" height="258" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-70.png" alt="" class="wp-image-1822" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-70.png 363w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-70-300x213.png 300w" sizes="(max-width: 363px) 100vw, 363px" /></figure>



<p class="wp-block-paragraph">「B3」の身長を見てみましょう。<br>間違えて「0」を余分につけて「1720」になっています。</p>



<p class="wp-block-paragraph">このまま更新ボタンを押すとそのまま計算・集計してしまい、正確な計算ができません。<br>ではIFを使用してエラーを防止してみましょう。</p>



<p class="wp-block-paragraph">条件として<strong><span class="marker-under-red">身長の範囲を「120～200」</span></strong>までとします。</p>



<p class="wp-block-paragraph">ではIFを使用して120～200以外は別の処理を行いたいと思います。<br>プログラムはこのようになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>If Height &lt; <strong><span class="marker-under-red">120</span></strong> Or Height &gt;<strong><span class="marker-under-red"> 200</span></strong> Then<br><span class="bold-green">MsgBox (&#8220;身長は120から200までで入力してください&#8221;)</span><br>Exit Sub<br>End If</p></blockquote>



<p class="wp-block-paragraph">Heightは身長データを格納している変数とします。<br>IFを使い、Heightが120～200の範囲以外だと 「<span style="color: rgb(62, 179, 112); font-weight: bold;">身長は120から200までで入力してください</span> 」</p>



<p class="wp-block-paragraph">とメッセージボックスを表示してExit Subでプログラムを終わらせます。<br>IFの詳しい使用方法は下記リンクを参照してみてください。☟</p>



<p class="wp-block-paragraph"><a href="https://dokugakuexcel.com/%e3%80%90if%e9%96%a2%e6%95%b0%e3%80%91%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%e3%81%a7%e2%97%8b%e2%97%8b%e3%81%a0%e3%81%a3%e3%81%9f%e3%82%89%e2%96%b3%e2%96%b3%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b/">【IF関数】エクセルで○○だったら△△を表示する～条件分岐を身に着ける～ ► 独学エクセル塾 (dokugakuexcel.com)</a></p>



<p class="wp-block-paragraph">ではプログラムに組み込んでみましょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub データ集計②織り込み()</p><p>Dim EndRow As Long<br>Dim Height As Long &#8216;身長<br>Dim Weight As Long &#8216;体重</p><p>EndRow = Cells(7, 2).End(xlDown).Row + 1</p><p>Height = Cells(3, 2)<br>Weight = Cells(3, 3)</p><p>If Height &lt; <strong><span class="marker-under-red">120 </span></strong>Or Height &gt; <strong><span class="marker-under-red">200</span></strong> Then<br><span class="bold-green">MsgBox (&#8220;身長は120から200までで入力してください&#8221;)</span><br>Exit Sub<br>End If</p><p>Cells(EndRow, 2) = Height<br>Cells(EndRow, 3) = Weight<br>Cells(EndRow, 4) = Weight / (Height / 100) ^ 2</p><p>Range(&#8220;B3:C3&#8221;).ClearContents</p><p>End Sub</p></blockquote>



<p class="wp-block-paragraph">実行した結果はこのようになります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="338" height="212" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-71.png" alt="" class="wp-image-1823" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-71.png 338w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-71-300x188.png 300w" sizes="(max-width: 338px) 100vw, 338px" /></figure>



<p class="wp-block-paragraph">IFで指定範囲外の数値を検出して</p>



<p class="wp-block-paragraph">設定したメッセージでフィードバックが可能になりました。</p>



<h3 class="wp-block-heading"><span id="toc5">・③入力規則で入力データを制限する</span></h3>



<p class="wp-block-paragraph">最後にVBAプログラムでの対処ではありませんが<br>エクセルの機能の<strong><span class="marker-under-red">入力規則を用いたエラーの回避</span></strong>を紹介します。</p>



<p class="wp-block-paragraph">こちらはエラーの根本を解決する方法になっており、<br><strong><span class="marker-under-red">エラーになる入力をさせない方法</span></strong>です。</p>



<p class="wp-block-paragraph">では先ほどと同様に身長を「120～200」で制限してみましょう。<br>入力制限対象を選択して<strong><span class="marker-under-blue">【データ】</span></strong>から<strong><span class="marker-under-blue">【データの入力規則】</span></strong>を選択してください。</p>



<figure class="wp-block-image"><img decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2021/08/image-10.png" alt=""/></figure>



<p class="wp-block-paragraph">ここでは詳しく説明はしませんが<br>入力値の種類を「整数」にして最小値を「120」、最大限を「200」にします。<br>データを「次の値の間」にしました。</p>



<p class="wp-block-paragraph">詳しい入力規則については下記リンクを参照してみてください☟</p>



<p class="wp-block-paragraph"><a href="https://dokugakuexcel.com/%e3%80%90%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e4%bd%9c%e6%88%90%e3%81%ab%e4%be%bf%e5%88%a9%e3%80%91%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e5%85%a5%e5%8a%9b%e8%a6%8f%e5%89%87%e3%81%ae%e8%a8%ad%e5%ae%9a/">【リストの作成に便利】データの入力規則の設定・制限から解除まで ► 独学エクセル塾 (dokugakuexcel.com)</a></p>



<figure class="wp-block-image size-full"><img decoding="async" width="488" height="366" src="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-72.png" alt="" class="wp-image-1824" srcset="https://dokugakuexcel.com/wp-content/uploads/2021/10/image-72.png 488w, https://dokugakuexcel.com/wp-content/uploads/2021/10/image-72-300x225.png 300w" sizes="(max-width: 488px) 100vw, 488px" /></figure>



<p class="wp-block-paragraph">これにより入力は「120～200」の整数のみ可能になります。<br>「A」などといった文字も制限されるのでとても便利です。</p>



<p class="wp-block-paragraph"></p>



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



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



<p class="wp-block-paragraph"><a href="https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/on-error-statement">On Error ステートメント (VBA) | Microsoft Learn</a></p>



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



<p class="wp-block-paragraph">いかがだったでしょうか。</p>



<p class="wp-block-paragraph">今回は対策を①から③の<br>①対象範囲内でエラーが起きたら指定位置へ飛ぶ<br>②IFを使用して異常値を検出して指定位置に飛ぶ<br>③入力規則で入力データを制限する<br>で紹介しました。</p>



<p class="wp-block-paragraph">①～③の知識は、すべてエラーを防止するためには大切なのですが<br>操作する人が複数であればあるほど自分の想定を超えた処理を行い、<br>エラーになってしまいます。<br>そのためにも①の方法は入れておけば汎用性は上がると思います</p>



<p class="wp-block-paragraph">ぜひ、①から③を織り込んでエラーに強いプログラムを作成してみてください。</p>



<p class="wp-block-paragraph">それでは次回の記事でお会いしましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e5%af%be%e7%ad%96%e3%80%91%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%ab%e8%b2%a0%e3%81%91%e3%81%aa%e3%81%84%e3%83%97%e3%83%ad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1815</post-id>	</item>
	</channel>
</rss>
