<?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://dreamparadaisu.com/tag/%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://dreamparadaisu.com</link>
	<description>今まで学んできたことや、新たに学んだこと、趣味を通して様々な人と共有できたらなと思いはじめた電脳日記。</description>
	<lastBuildDate>Sat, 05 Nov 2022 14:23:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<atom:link rel='hub' href='https://dreamparadaisu.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">180489529</site>	<item>
		<title>【Python勉強会】画像からバーコードを読取ってみた～QRコード編～</title>
		<link>https://dreamparadaisu.com/python_28/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_28</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 03 Jul 2021 14:39:10 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=2598</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回はPythonで画像に映ったバーコード(QRコード)を読取り、 読取った結果を表示する方法を紹介していきます。 &#160; ちなみに前回の記事はこちら 【Python勉強会】...</p>
The post <a href="https://dreamparadaisu.com/python_28/">【Python勉強会】画像からバーコードを読取ってみた～QRコード編～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回はPythonで画像に映ったバーコード(QRコード)を読取り、</p>
<p>読取った結果を表示する方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回の記事はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_27/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_27/" class="blog-card-title-link">【Python勉強会】再帰処理について簡単に紹介</a></div><div class="blog-card-excerpt">Pythonで再帰処理をする方法を簡単に例を出しながら紹介しています。例として、ある自然数nの1～nまでの総和を求めるといった問題を対象に再帰処理を使った場合と使わない場合で簡単にコードを書いています。さわりだけでも簡単にわかってもらえたら嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_27/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_27/" alt="" /></a></div><div class="blog-card-date">2021-06-22 09:00</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HE8CV+97114I+4OPM+5Z6WX" rel="nofollow"> <img decoding="async" src="https://www27.a8.net/svt/bgt?aid=210616015556&amp;wid=001&amp;eno=01&amp;mid=s00000021865001004000&amp;mc=1" alt="" width="468" height="60" border="0" /></a> <img decoding="async" src="https://www17.a8.net/0.gif?a8mat=3HE8CV+97114I+4OPM+5Z6WX" alt="" width="1" height="1" border="0" /></p>
<h1>画像に映ったバーコードを読取る</h1>
<p>Pythonで画像に映されたバーコードを読取るには、</p>
<p>pyzbarといったモジュールを使うことで簡単にコードを書くことができます。</p>
<p>&nbsp;</p>
<p>ここは先人の知恵をお借りして、コードの開発工数を削減していきましょう。</p>
<p>(ありがとうございます。)</p>
<p>&nbsp;</p>
<h2>pyzbarをインストールする</h2>
<p>自身のPython環境にインストールするには、</p>
<p>コマンドプロンプトを立ち上げて、以下のコマンドを実行します。</p>
<p>&nbsp;</p>
<div class="sp-info">pip install pyzbar</div>
<p>もしくは</p>
<div class="sp-info">pip3 install pyzbar</div>
<p>&nbsp;</p>
<p>※このコマンドを実行する前に、以下のコマンドを</p>
<p>念のため、優先して実行しておきましょう。</p>
<p>&nbsp;</p>
<div class="sp-info">pip install &#8211;upgrade pip</div>
<p>もしくは</p>
<div class="sp-info">pip3 install &#8211;upgrade pip3</div>
<p>&nbsp;</p>
<h2>Pythonのコードファイルで使う方法</h2>
<p>インストールしたpyzbarを使用するには、</p>
<p>.pyファイル上で、</p>
<div class="sp-info">from  pyzbar.pyzbar import decode</div>
<p>と書きます。</p>
<p>&nbsp;</p>
<p>pyzbarのdecodeクラスを使用します。</p>
<p>&nbsp;</p>
<h1>今回使用する画像ファイル</h1>
<p>以下のサイトで作成したQRコードを使います。</p>
<p><a href="https://qr.quel.jp/text.php"><a href="https://qr.quel.jp/text.php">https://qr.quel.jp/text.php</a></a></p>
<p>&nbsp;</p>
<figure id="attachment_mmd_2601" class="wp-block-image aligncenter"><img decoding="async" width="162" height="162" src="https://dreamparadaisu.com/wp-content/uploads/2021/07/QR_311671.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>作成したQRコードには<span class="marker-under">&#8220;12345678&#8221;</span>が含まれています。</p>
<p>&nbsp;</p>
<h1>画像からバーコードを読取る</h1>
<p>バーコードを読取るには、pyzbarのほかに以下のライブラリを使用します。</p>
<p>&nbsp;</p>
<div class="sp-info">from pathlib import path</div>
<div class="sp-info">from PIL import Image</div>
<p>&nbsp;</p>
<p>pthlibでは<span class="marker-under">ローカルパスに保存された画像ファイルを扱う</span>のに使います。</p>
<p>PILは<span class="marker-under">画像ファイルを読み込む</span>のに使います。</p>
<p>&nbsp;</p>
<p>※もしPILが<span class="red-under">インストールされていなかったら</span>、</p>
<div class="sp-info">　　pip install pil　(Python2系)</div>
<div class="sp-info">　　pip install pillow　(Python3系)</div>
<p>バージョンによって違います。</p>
<p>&nbsp;</p>
<p>これを組合わせて、以下のコードを書きます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">from pyzbar.pyzbar import decode
from pathlib import Path
from PIL import Image

# 画像ファイルの指定
p = Path(r"画像が保存されているパス")

# QRコードの読取
data = decode(Image.open(p))

# コードの内容を出力
print(data[0][0].decode('utf-8', 'ignore'))</pre><p>
&nbsp;</p>
<p>まず、画像ファイルのパスを指定します。</p>
<p>それから、画像ファイルを読取り、pyzbarのdecodeを使って</p>
<p>画像内のバーコード(QRコード)を探します。</p>
<p>&nbsp;</p>
<p>結果を<strong><span class="marker-under">data[0][0].decode(&#8216;utf-8&#8217;, &#8216;ignore&#8217;)</span></strong>とすることで、</p>
<p>出力がされます。</p>
<p>&nbsp;</p>
<p>今回は、printで表示される結果として&#8221;12345678&#8243;が表示されたらクリアです。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Pythonでpyzbarモジュールを使うことで簡単に画像に映った、</p>
<p>バーコードを読取ることができました。</p>
<p>&nbsp;</p>
<p>これを応用することで、読み取ったデータで照合ツールや、</p>
<p>画像ファイルのパスと読取った結果を紐付けて、データベースに保存する</p>
<p>といったこともできますね。</p>
<p>&nbsp;</p>
<p>複数読取りなどの課題については次回以降まとめていきます。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="2598"
					data-ulike-nonce="fe1f5a4e9c"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2598"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_28/">【Python勉強会】画像からバーコードを読取ってみた～QRコード編～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2598</post-id>	</item>
		<item>
		<title>【Python勉強会】再帰処理について簡単に紹介</title>
		<link>https://dreamparadaisu.com/python_27/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_27</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Tue, 22 Jun 2021 00:00:47 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=2487</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、再帰処理といわれる方法を使って、ある自然数nの1～nまでの総和を求める といったことをやっていきます。 &#38;bsop; ちなみにPython記事は久々の更新になります...</p>
The post <a href="https://dreamparadaisu.com/python_27/">【Python勉強会】再帰処理について簡単に紹介</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、再帰処理といわれる方法を使って、ある自然数nの1～nまでの総和を求める</p>
<p>といったことをやっていきます。</p>
<p>&amp;bsop;</p>
<p>ちなみにPython記事は久々の更新になります。</p>
<p>最近はVB.Netばかり書いていました。</p>
<p>&nbsp;</p>
<p>前回はこんな記事書いていました。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_26/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_26/" class="blog-card-title-link">【Python勉強会】enumerate関数を覚えよう</a></div><div class="blog-card-excerpt">Pythonにおけるenumerate関数の使い方を例を交えて紹介しています。enumerate関数は配列変数を引数に渡すことで(インデックス、要素)を返してくれる便利な関数です。ここで使い方を覚えて活用していただけたらなと思います。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_26/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_26/" alt="" /></a></div><div class="blog-card-date">2020-10-04 13:13</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HI93W+DDNP6A+0K+15RCDD" rel="nofollow">
<img fetchpriority="high" decoding="async" class="aligncenter" src="https://www22.a8.net/svt/bgt?aid=210803612809&amp;wid=001&amp;eno=01&amp;mid=s00000000002007014000&amp;mc=1" alt="" width="728" height="90" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www14.a8.net/0.gif?a8mat=3HI93W+DDNP6A+0K+15RCDD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1></h1>
<h1>再帰処理とは</h1>
<blockquote>プログラミングにおいて、あるプロシージャの<b>処理</b>内部で再びそのプロシージャ自身を呼び出すような<b>処理</b>を指します。 関数等のプロシージャ中で自身を呼び出すことで、類似の<b>処理</b>を繰り返すことが可能となります。 <b>再帰処理</b>を行う関数を<b>再帰</b>関数と呼びます。 &#8230; return n+m; //nにそれまでの<b>再帰処理</b>の結果を足す。
<p style="text-align: right"><a href="https://gimo.jp/glossary/details/recursion.html#:~:text=%E5%86%8D%E5%B8%B0%E5%87%A6%E7%90%86%E3%81%A8%E3%81%AF%E3%80%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0,%E5%86%8D%E5%B8%B0%E9%96%A2%E6%95%B0%E3%81%A8%E5%91%BC%E3%81%B3%E3%81%BE%E3%81%99%E3%80%82&amp;text=return%20n%2Bm%3B%20%2F%2Fn,%E5%87%A6%E7%90%86%E3%81%AE%E7%B5%90%E6%9E%9C%E3%82%92%E8%B6%B3%E3%81%99%E3%80%82">出典</a></p>
</blockquote>
<p>例えば、ある自然数nがあって、</p>
<p>1～nまでの総和を求めたい場合などに再帰処理は使うことができます。</p>
<p>&nbsp;</p>
<p>例) n = 10のとき、1～10までの総和を求める。</p>
<p>&nbsp;</p>
<p>1 + 0 = 1</p>
<p>1 + 2 = 3</p>
<p>3 + 3 = 6</p>
<p>……</p>
<p>10 + 45 = 55</p>
<p>&nbsp;</p>
<p>全てを足していくと、答えは&#8221;55&#8243;になります。</p>
<p>&nbsp;</p>
<h2>再帰処理を使わない場合</h2>
<p>先ほどの例を再帰処理を使わないでプログラムにすると、
</p><pre class="urvanov-syntax-highlighter-plain-tag">rec = 0
for i in range(11):
    rec += i

print(rec)</pre><p>
単に繰り返し処理で書いたコードになります。</p>
<h2>再帰処理を使った場合</h2>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">def sum(n):
    rec = 0
    if n == 0:
        return
    else:
        rec = sum(n - 1)  # 自身を呼び出す
        return n + m

print(sum(10))
# 55</pre><p>
先ほどの例を関数として書いています。</p>
<p>&nbsp;</p>
<p>nが0になると関数を抜けて、この前の処理で結果が渡される。</p>
<p>関数内で自分自身を呼び出すことを再帰処理、関数にしたものを再帰関数と呼びます。</p>
<h3>例　階乗</h3>
<p>自然数nの階乗を求める関数を作成します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">def factorial(n):
    rec = 0
    if n &gt; 0:
        rec = n * factorial(n - 1)
    else:
        rec = 1
    return rec</pre><p>
n = 3のとき、関数factorialを実行すると、6になります。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Pythonで再帰処理について書き方を簡単に紹介しました。</p>
<p>意外と使えるようになると便利な方法なので、興味のある方はぜひ</p>
<p>自身のコードに活かしてみてはいかがでしょうか。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="2487"
					data-ulike-nonce="d431f641c1"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2487"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_27/">【Python勉強会】再帰処理について簡単に紹介</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2487</post-id>	</item>
		<item>
		<title>【VB.Net】約数を見つける関数を作ってアプリ化してみた</title>
		<link>https://dreamparadaisu.com/visualbasic_59/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_59</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Thu, 04 Mar 2021 16:38:51 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[入門]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1872</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; だいぶ間が空いてしまいました。 初心に戻って、今回は約数を見つける関数を作成しアプリ化したので 載せておきます。 &#160; ちなみに前回はこちら、 【VB.Net】最大公約数を...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_59/">【VB.Net】約数を見つける関数を作ってアプリ化してみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>だいぶ間が空いてしまいました。</p>
<p>初心に戻って、今回は約数を見つける関数を作成しアプリ化したので</p>
<p>載せておきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら、</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_58/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_2-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_2-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_2-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_2-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_58/" class="blog-card-title-link">【VB.Net】最大公約数を求めるプログラムを考えてみる</a></div><div class="blog-card-excerpt">与えられた2つの整数(自然数)の最大公約数を算出するプログラムをVB.Netで考えてみます。ここでは最大公約数の算出の手順を考え、考えた手順(アルゴリズム)からプログラムにしていく方法を紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_58/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_58/" alt="" /></a></div><div class="blog-card-date">2021-02-12 08:00</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。</p>
<p>最初の手順については、下記記事をご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-title-link">VisualStudioで始めるWindowsアプリケーション開発</a></div><div class="blog-card-excerpt">VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。
以前に、簡単にざっくりと教える機会があった...</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/vb_aplication_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/vb_aplication_1/" alt="" /></a></div><div class="blog-card-date">2020-08-22 17:45</div></div></div>
<p>&nbsp;</p>
<h2>フォームの作成</h2>
<p>以下のようなフォームを作成します。</p>
<figure id="attachment_mmd_1879" class="wp-block-image aligncenter"><img decoding="async" width="680" height="406" src="https://dreamparadaisu.com/wp-content/uploads/2021/03/TestYaksU_6.png" class="attachment-680x611 size-680x611" alt="" loading="lazy" align="center" /></figure>
<p>①～⑤のコントロールについては以下の表のとおりです。</p>

<table id="tablepress-42" class="tablepress tablepress-id-42">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">Label</td><td class="column-3">Label1</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">TextBox</td><td class="column-3">TextBox1</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">Button</td><td class="column-3">Button1</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">Label</td><td class="column-3">Label2</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">TextBox</td><td class="column-3">TextBox2</td>
</tr>
</tbody>
</table>

<p>各コントロールのフォントは、メイリオの16ptを設定しています。</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>「約数を算出」ボタンを押すことで、「約数を見つける数字」に入力された数字(自然数)の</p>
<p>約数を算出し、結果を「約数は」に表示するプログラムの作成を目的とします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<p>&nbsp;</p>
<h2>約数とは</h2>
<p><strong><span class="marker-under">ある整数を割りきることができる整数を約数</span></strong>といいました。</p>
<p>これは小学校ぐらいで習う最初の難関だったと記憶しています。</p>
<p>&nbsp;</p>
<p>まず約数を算出する割り算の過程が、算数を学びたての頃は苦戦に感じ、</p>
<p>思うように答えを導き出せなかったのを覚えています。。。</p>
<p>&nbsp;</p>
<p>今回は、そんな約数をプログラムで算出します。</p>
<h2>約数の算出は関数として定義する</h2>
<p>約数は、<span class="red-under">1～対象の数字までで割り算をしていき、</span></p>
<p><span class="red-under">処理を繰り返していく過程で対象の数字を割り切れることができる数</span>については、</p>
<p><span class="marker-under"><span style="font-size: 18px"><strong>約数</strong></span>とみなせます</span>。</p>
<p>&nbsp;</p>
<p>この一連の処理を今回は関数として定義していきます。</p>
<p>コードを書くと以下のような形になります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 約数を見つける関数
    ''' &lt;/summary&gt;
    ''' &lt;param name="target"&gt;&lt;/param&gt;
    ''' &lt;returns&gt;&lt;/returns&gt;
    Private Function FindYaksu(ByVal target As Integer) As List(Of Integer)
        Dim lstRec As New List(Of Integer)
        For i As Integer = 1 To target
            If target Mod i = 0 Then
                lstRec.Add(i)
            End If
        Next i
        Return lstRec
    End Function</pre><p>
戻り値には、リスト型で返すようにしています。</p>
<p>&nbsp;</p>
<p>これは複数ある場合、リストに収めておく方が後で利用しやすいのと、</p>
<p><strong><span class="red-under">単純にリストが好きだから</span></strong>です。</p>
<p>……最近やたらとリストを使いがち、ちゃんと考えて使わないと、です(笑)</p>
<p>&nbsp;</p>
<p>関数ができてしまえば、あとは作成した関数を呼び出してあげて、</p>
<p>引数として渡した数の約数をリスト型に収めて結果を返してあげれば、</p>
<p>今回の目的達成です。</p>
<p>&nbsp;</p>
<p>呼び出し方と、結果の表示方法については、</p>
<p>コードのみを貼っておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestYaksu

    ''' &lt;summary&gt;
    ''' 約数を算出するボタンをクリック
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' テキストボックスに数字が入力されているかチェック
        If Me.TextBox1.Text &lt;&gt; "" Then
            ' 入力されていれば約数を見つけます。
            Dim lstOutput As New List(Of Integer)
            lstOutput = FindYaksu(CInt(Me.TextBox1.Text))

            Dim output As String = ""
            For Each number As String In lstOutput
                output &amp;= CStr(number) &amp; ","
            Next number

            ' 結果をテキストボックスへ表示
            Me.TextBox2.Text = output
        End If
    End Sub
End Class</pre><p>
&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3H39R8+BET46Q+2OM2+TVJ4X" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www26.a8.net/svt/bgt?aid=210104612690&amp;wid=001&amp;eno=01&amp;mid=s00000012521005018000&amp;mc=1" alt="" width="640" height="200" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www18.a8.net/0.gif?a8mat=3H39R8+BET46Q+2OM2+TVJ4X" alt="" width="1" height="1" border="0" />
<h1>実行編</h1>
<figure id="attachment_mmd_1873" class="wp-block-image aligncenter"><img decoding="async" width="800" height="479" src="https://dreamparadaisu.com/wp-content/uploads/2021/03/TestYaksU_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<figure id="attachment_mmd_1876" class="wp-block-image aligncenter"><img decoding="async" width="796" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/03/TestYaksU_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<figure id="attachment_mmd_1877" class="wp-block-image aligncenter"><img decoding="async" width="799" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/03/TestYaksU_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<h1>まとめ</h1>
<p>約数とは、ある数を割り切ることができる(割った時に0になる)数を約数といいます。</p>
<p>&nbsp;</p>
<p>ある決まった法則に基づいて算出できるような式などをプログラムで表すときには、</p>
<p>関数として定義しておくのが便利です。何度も同じコードを書いてしまうと、</p>
<p>修正に手間がかかったり、コードの見栄えが悪くなってしまいがちです。</p>
<p>&nbsp;</p>
<p>今回のような場合などは、関数として定義する癖をつけておくとよいでしょう。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・参考になりそうなオススメVB.Net書籍</em></strong></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059110/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059110&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=49504f7b36ac08cf2b224b6b17fb0f90" target="_blank" rel="noopener">VisualBasic2019パーフェクトマスター (Perfect Master)</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059439/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059439&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=385e43a33a0b7e31e25a37160ebef74f" target="_blank" rel="noopener">現場ですぐに使える! Visual Basic 2019 逆引き大全 500の極意</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4774190403/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4774190403&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=574c33411bd7b0c0ed9f4af2ec1a881d" target="_blank" rel="noopener">かんたん Visual Basic [改訂2版] (プログラミングの教科書)</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059005/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059005&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=935e3864ca2312e2abcd090fd0493bf9" target="_blank" rel="noopener">作って覚えるVisual Basic 2019 デスクトップアプリ入門</a></p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1872"
					data-ulike-nonce="8f654d23df"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1872"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_59/">【VB.Net】約数を見つける関数を作ってアプリ化してみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1872</post-id>	</item>
		<item>
		<title>【VB.Net】最大公約数を求めるプログラムを考えてみる</title>
		<link>https://dreamparadaisu.com/visualbasic_58/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_58</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Thu, 11 Feb 2021 23:00:40 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1796</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 しばらく投稿が途絶えており、久々の投稿になります。 ⇒　オンライン学習と趣味に費やしていました……。 &#160; そんなことはさておき、今回は最大公約数を求めるプログラムについて考え、 最終的...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_58/">【VB.Net】最大公約数を求めるプログラムを考えてみる</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>しばらく投稿が途絶えており、久々の投稿になります。</p>
<p>⇒　オンライン学習と趣味に費やしていました……。</p>
<p>&nbsp;</p>
<p>そんなことはさておき、今回は最大公約数を求めるプログラムについて考え、</p>
<p>最終的にはプログラムによって2つの値の最大公約数を求める</p>
<p>といった内容を紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちらでした。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_57/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/digit_sum_1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/digit_sum_1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/digit_sum_1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/digit_sum_1-144x144.png 144w, https://dreamparadaisu.com/wp-content/uploads/2021/01/digit_sum_1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_57/" class="blog-card-title-link">【VB.Net】任意の数字の各桁の和を計算する関数を作ってみた</a></div><div class="blog-card-excerpt">ある数字の桁を抽出し、各桁の和を求めるアルゴリズムを考え、VB.Netで関数化してみました。関数化第1弾ということでプログラムコンテストでも取り扱われる計算問題を例に紹介をしていきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_57/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_57/" alt="" /></a></div><div class="blog-card-date">2021-01-27 22:54</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。</p>
<p>最初の手順については、下記記事をご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-title-link">VisualStudioで始めるWindowsアプリケーション開発</a></div><div class="blog-card-excerpt">VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。
以前に、簡単にざっくりと教える機会があった...</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/vb_aplication_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/vb_aplication_1/" alt="" /></a></div><div class="blog-card-date">2020-08-22 17:45</div></div></div>
<h2>フォームの作成</h2>
<p>以下のようなフォームを作成します。</p>
<figure id="attachment_mmd_1803" class="wp-block-image aligncenter"><img decoding="async" width="680" height="407" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_1.png" class="attachment-680x613 size-680x613" alt="" loading="lazy" align="center" /></figure>
<p>①～⑦のコントロールについては以下の表のとおりです。</p>

<table id="tablepress-40" class="tablepress tablepress-id-40">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">Label</td><td class="column-3">lbxValue_1</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">Label</td><td class="column-3">lbxValue_2</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">TextBox</td><td class="column-3">tbxValue_1</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">TextBox</td><td class="column-3">tbxValue_2</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">Button</td><td class="column-3">btnMath</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">Label</td><td class="column-3">lbxAnswer</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">Label</td><td class="column-3">lbxGcd</td>
</tr>
</tbody>
</table>
<!-- #tablepress-40 from cache -->
<p>各コントロールのフォントは、メイリオの16ptを設定しています。</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>「計算する」ボタンを押すことで、値1と値2に入力された数字(自然数)の最大公約数を</p>
<p>算出し、結果を最大公約数に表示するプログラムの作成を目的とします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<h2>最大公約数とは？</h2>
<p>最大公約数とは、WikiPediaで調べてみると</p>
<blockquote><b>最大公約数</b>（さいだいこうやくすう、<a title="英語" href="https://ja.wikipedia.org/wiki/%E8%8B%B1%E8%AA%9E">英</a>: <span lang="en">greatest common divisor</span>）とは、少なくとも一つが<a title="0" href="https://ja.wikipedia.org/wiki/0">0</a>ではない複数の<a title="整数" href="https://ja.wikipedia.org/wiki/%E6%95%B4%E6%95%B0">整数</a>の<a title="公約数" href="https://ja.wikipedia.org/wiki/%E5%85%AC%E7%B4%84%E6%95%B0">公約数</a>のうち最大の数を指す<sup id="cite_ref-FOOTNOTEHardyWright200824_1-0" class="reference"><a href="https://ja.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E7%B4%84%E6%95%B0#cite_note-FOOTNOTEHardyWright200824-1">[1]</a></sup>。
<p style="text-align: right">出典: <a href="https://ja.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E7%B4%84%E6%95%B0">フリー百科事典『ウィキペディア（Wikipedia）』</a></p>
</blockquote>
<p>要するに複数の値を割ることができる共通の値の中でも値が最も大きいモノを指します。</p>
<p>例えば、12と16の最大公約数は4になります。</p>
<p>&nbsp;</p>
<p>12と16では、<span class="marker-under"><span style="font-size: 18px"><strong>約数</strong></span>(割ることのできる整数)</span>はそれぞれ</p>
<p>12　→　1, 2, 3, 4, 6, 12</p>
<p>16　→　1, 2, 4, 8, 16</p>
<p>となり、12と16で共通している約数は、それぞれ1,2,4になります。</p>
<p>1,2,4は<span class="marker-under"><span style="font-size: 18px"><strong>公約数</strong></span>(2つ以上の整数、この場合12と16の共通の約数)</span>と呼ばれます。</p>
<p>&nbsp;</p>
<p>最大公約数とは、これらの中で<span class="marker-under">最も大きな値である<strong>4が最大の公約数</strong></span>になります。</p>
<p>このようにして2つの自然数から最大公約数を見つけていきます。</p>
<p>&nbsp;</p>
<p>最大公約数を求める手順</p>
<ol>

<li>2つの自然数の約数を算出する。</li>

<li>1で求まった約数から共通の約数を算出する。</li>

<li>2で見つかった共通の約数から最大の値を見つける。</li>

<li>3で見つかった最大の値が最大公約数になる。</li>
</ol>
<p>1～4の手順を行えば、最大公約数を算出することができます。</p>
<p>では実際に1つずつ手順をプログラム化していきたいと思います。</p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3BQW9V+A3RVEA+4L4G+5Z6WX" alt="" width="1" height="1" border="0" />
<h2>最大公約数を算出するプログラムの作成</h2>
<p>各手順について1つずつプログラム化する説明をしていきます。</p>
<p>&nbsp;</p>
<h3>2つの自然数から約数を算出</h3>
<p>与えられた2つの自然数からそれぞれ約数を抽出していきます。</p>
<p>ちなみに約数は、<span class="marker-under">ターゲットとなる自然数を割ることができる数が約数</span>でした。</p>
<p>&nbsp;</p>
<p>今回は、リスト型を使ってターゲットとなる自然数の約数を算出していきます。</p>
<p>割ることのできる数の範囲は、<span class="marker-under">ターゲットとなる自然数以下が範囲</span>になります。</p>
<p>&nbsp;</p>
<p><span class="marker-under">ターゲットとなる自然数が<strong>最大の約数</strong></span>になりますので、それ以下としています。</p>
<p>したがって、1～ターゲットとなる自然数の範囲で割ることができるかできないかを</p>
<p>条件式で判断し、割り切れる場合はリスト型の変数へ代入をする。</p>
<p>&nbsp;</p>
<p>これをターゲットとなる自然数の回数分、</p>
<p>繰り返し処理を行っていくプログラムを書けば、約数を算出することができそうです。</p>
<p>実際にコードを書いていくと、
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 約数を格納するリスト型変数
        Dim lstValue As New List(Of Integer)
        Dim cnt As Integer = 1
        ' value以下になるまで処理を繰り返す
        While cnt &lt;= value
            If value Mod cnt = 0 Then
                ' 割り切れる場合は約数なので、リスト型変数へ追加
                lstValue.Add(cnt)
            End If
            cnt += 1
        End While</pre><p>
このようになります。</p>
<p>&nbsp;</p>
<p>今回は約数を算出する自然数が複数あるので、これを関数化します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 引数の訳数を見つける関数
    ''' &lt;/summary&gt;
    ''' &lt;param name="value"&gt;&lt;/param&gt;
    ''' &lt;returns&gt;&lt;/returns&gt;
    Private Function FindDivisor(ByVal value As Integer) As List(Of Integer)
        ' 訳数を格納するリスト型変数
        Dim lstValue As New List(Of Integer)
        Dim cnt As Integer = 1
        ' value以下になるまで処理を繰り返す
        While cnt &lt;= value
            If value Mod cnt = 0 Then
                ' 割り切れる場合は約数なので、リスト型変数へ追加
                lstValue.Add(cnt)
            End If
            cnt += 1
        End While
        ' 戻り値としてリスト型変数を返す
        Return lstValue
    End Function</pre><p>
これで最大公約数を求める手順1をプログラム化することができました。</p>
<p>&nbsp;</p>
<h3>求まった約数から共通の約数を算出する</h3>
<p>1で求まった2つの自然数の約数から共通の約数を見つけていきます。</p>
<p>&nbsp;</p>
<p>それぞれの約数はリスト型変数で宣言をしているので、</p>
<p>リスト型で提供されている以下のメソッドを使用して、</p>
<p><span class="marker-under">リスト型変数にある共通の要素(値)をまとめていきます</span>。</p>
<div class="sp-info">リスト型変数1.FindAll(Address Of リスト型変数2.Contains)</div>
<p>&nbsp;</p>
<p><span class="red-under">FindAllメソッド</span>はリスト型変数1と2の中で要素(値)を抽出する条件にあった時に</p>
<p>Trueで返すメソッドに基づいて、リスト型変数を作成し、</p>
<p>戻り値として返すメソッドになっています。</p>
<p>&nbsp;</p>
<p>今回それぞれのリスト型変数で<span class="marker-under">共通の要素を抽出したい</span>ので、</p>
<p><strong>『抽出する条件にあった時にTrueで返すメソッド』</strong>には</p>
<p><span class="red-under">リスト型変数.Containsメソッド</span>を使用します。</p>
<p>&nbsp;</p>
<p>実際にコードで書くと以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 2つの約数から共通の約数を算出する
        Dim lstCommonDivisor As List(Of Integer) = lstValue1.FindAll(AddressOf lstValue2.Contains)</pre><p>
&nbsp;</p>
<h3>共通の約数から最大の値を見つける</h3>
<p>最大の値を見つけるには、以下のメソッドを使用します。</p>
<div class="sp-info">リスト型変数.Max</div>
<p>&nbsp;</p>
<p>Maxメソッドは、リスト型変数の要素のうち</p>
<p><span class="red-under">最大の要素を返してくれる</span>、便利なメソッドです。</p>
<p>&nbsp;</p>
<p>ここで<span class="red-under">返された値が与えられた2つの自然数の<span style="font-size: 18px"><strong>最大公約数</strong></span></span>となります。</p>
<p>最後に求まった値を表示してあげれば、</p>
<p>2つの自然数の最大公約数を算出するプログラムの完成です。
</p><pre class="urvanov-syntax-highlighter-plain-tag">' 共通の約数から最大の値を見つける　⇒　最大公約数
        Me.lbxGcd.Text = lstCommonDivisor.Max</pre><p>
お疲れ様です。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BOIYL+FXCGC2+399O+66WOX" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www21.a8.net/svt/bgt?aid=201018621963&amp;wid=001&amp;eno=01&amp;mid=s00000015198001040000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www14.a8.net/0.gif?a8mat=3BOIYL+FXCGC2+399O+66WOX" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>実行編</h1>
<figure id="attachment_mmd_1799" class="wp-block-image aligncenter"><img decoding="async" width="795" height="474" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">プログラム起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1798" class="wp-block-image aligncenter"><img decoding="async" width="798" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">値1への値を入力</p>
<figure id="attachment_mmd_1800" class="wp-block-image aligncenter"><img decoding="async" width="798" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">値2への値を入力</p>
<figure id="attachment_mmd_1801" class="wp-block-image aligncenter"><img decoding="async" width="799" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">値1と値2の最大公約数を算出(結果表示)</p>
<figure id="attachment_mmd_1802" class="wp-block-image aligncenter"><img decoding="async" width="799" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2021/02/GCD_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">別の値での算出</p>
<p>&nbsp;</p>
<h1>別解編</h1>
<p>一方で当然過程を知らなくても最大公約数を算出するプログラムを作成することは可能です。</p>
<p>最大公約数の言葉の意味を知っていれば、できてしまいます。</p>
<p>&nbsp;</p>
<p>最大公約数　→　割り切れる共通の約数の中で最大となる値</p>
<p>これに＋α　ひらめきがあれば先ほどの手順なんて不要でしょう。</p>
<p>&nbsp;</p>
<p>実際に、こういった場合の手順を無視したパターンのコードを書くと、</p>
<p>以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 値1と値2の最大公約数を算出する
    ''' &lt;/summary&gt;
    ''' &lt;param name="value_1"&gt;&lt;/param&gt;
    ''' &lt;param name="value_2"&gt;&lt;/param&gt;
    ''' &lt;returns&gt;&lt;/returns&gt;
    Private Function FindGCD(ByVal value_1 As Integer, ByVal value_2 As Integer) As Integer
        ' 余りが0出ない限り、計算を続行
        If Math.Floor(value_1 Mod value_2) &lt;&gt; 0 Then
            Return FindGCD(value_2, Math.Floor(value_1 Mod value_2))
        Else
            ' 前回の余りを値1と値2の最大公約数として返す
            Return value_2
        End If
    End Function</pre><p>
最大公約数は2つの自然数同士が割り切れるまで計算していきます。</p>
<p>割り切れたら、最大公約数を求めることができます。</p>
<p>&nbsp;</p>
<p>この時、割り切れた時の商が最大公約数ではなく、割り切れた時の分母となる値が</p>
<p>最大公約数となります。</p>
<p>これでも2つの自然数の最大公約数を算出することができます。</p>
<p>&nbsp;</p>
<h1>最後に</h1>
<p>いきなり公式などに基づいて計算をして答えがわかっても、途中の過程がわからなければ</p>
<p>プログラム化をすることは難しいと思います。</p>
<p>&nbsp;</p>
<p>このようにして過程を抽出していくことで、どのようにして答えが求められているのかが</p>
<p>見えてきます。</p>
<p>&nbsp;</p>
<p>結果、プログラム化することが簡単になります。</p>
<p>癖として、計算過程を考え書いていく習慣をつけることで</p>
<p>&nbsp;</p>
<p>様々な視点で答えを見つけられる力が養われていき、</p>
<p>難題に直面した場合でも冷静に物事を見ることができるのではないでしょうか。</p>
<p>&nbsp;</p>
<p>答えは１つだとしても、<strong><span class="red-under">答えに行き付く過程は１つとは限りません</span></strong>。</p>
<p>&nbsp;</p>
<p>公式をアプリケーション化するのは学習にもなるし、公式も覚えられるようになるので</p>
<p>結構便利なのではないかなと考えています。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>最大公約数を算出する手順(アルゴリズム)について考え、</p>
<p>プログラム化していく方法について紹介しました。</p>
<p>&nbsp;</p>
<p>最大公約数以外にも最小公倍数や階乗など計算による答えを</p>
<p>プログラムによって求めたい場合にも応用はできるかと思います。</p>
<p>&nbsp;</p>
<p>こうした計算法をプログラム化する上では、</p>
<p>まず、<span class="marker-under"><strong>『答えがどのようにして求められているか計算過程を抽出』</strong></span>して</p>
<p>考えてみるのが良いです。</p>
<p>&nbsp;</p>
<p>参考にしていただけたら嬉しいです。</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・参考になりそうなオススメVB.Net書籍</em></strong></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059110/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059110&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=49504f7b36ac08cf2b224b6b17fb0f90" target="_blank" rel="noopener">VisualBasic2019パーフェクトマスター (Perfect Master)</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059439/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059439&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=385e43a33a0b7e31e25a37160ebef74f" target="_blank" rel="noopener">現場ですぐに使える! Visual Basic 2019 逆引き大全 500の極意</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4774190403/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4774190403&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=574c33411bd7b0c0ed9f4af2ec1a881d" target="_blank" rel="noopener">かんたん Visual Basic [改訂2版] (プログラミングの教科書)</a></p>
<p><a href="https://www.amazon.co.jp/gp/product/4798059005/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798059005&amp;linkCode=as2&amp;tag=ryokutea08-22&amp;linkId=935e3864ca2312e2abcd090fd0493bf9" target="_blank" rel="noopener">作って覚えるVisual Basic 2019 デスクトップアプリ入門</a></p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1796"
					data-ulike-nonce="b4445a912b"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1796"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_58/">【VB.Net】最大公約数を求めるプログラムを考えてみる</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1796</post-id>	</item>
		<item>
		<title>【VB.Net】任意の数字の各桁の和を計算する関数を作ってみた</title>
		<link>https://dreamparadaisu.com/visualbasic_57/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_57</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Wed, 27 Jan 2021 13:54:48 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[マインド]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1760</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は任意の数字の各桁を抽出していき、抽出した桁をそれぞれ足し合わせて 和を求める関数を自作していきます。 &#160; 関数を作成するポイントや考え方を紹介出来たらなと思っていま...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_57/">【VB.Net】任意の数字の各桁の和を計算する関数を作ってみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は任意の数字の各桁を抽出していき、抽出した桁をそれぞれ足し合わせて</p>
<p>和を求める関数を自作していきます。</p>
<p>&nbsp;</p>
<p>関数を作成するポイントや考え方を紹介出来たらなと思っています。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_56/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/saiki_2-1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/saiki_2-1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/saiki_2-1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/saiki_2-1-144x144.png 144w, https://dreamparadaisu.com/wp-content/uploads/2021/01/saiki_2-1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_56/" class="blog-card-title-link">【VB.Net】再帰処理について考えてみる</a></div><div class="blog-card-excerpt">再帰処理とは、自分自身を呼び出す関数や処理のことをいいます。今回はVB.Netで再帰処理について考えてみたので簡素に紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_56/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_56/" alt="" /></a></div><div class="blog-card-date">2021-01-26 22:52</div></div></div>
<p>&nbsp;</p>
<p>前回記事にした再帰処理の考え方も今回織り込んでいきます。</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>関数化の考え方</h1>
<p>考え方としては、以下のようなポイントが経験上関数化できると考えています。</p>
<ol>

<li>同じような処理が続く場合は関数化できないか考える</li>

<li>最初は直書きし、後でまとめられるとこは関数化を考える</li>

<li>関数の中に関数を無暗に作らない</li>

<li>階層が深くなりそうなところは関数化を考える</li>
</ol>
<h2>同じような処理が続く場合は関数化できないか考える</h2>
<p>コードの見やすさと保守性も考えた結果、</p>
<p>同じような処理が何個も至る所にあると修正が発生した場合</p>
<p>&nbsp;</p>
<p>全ての箇所を修正していかなくてはならないので、</p>
<p><span class="red-under">コードの再修正に大幅な時間がかかってしまい効率が悪い</span>です。</p>
<p>なので、<span class="marker-under">同じような処理が増える場合は先に関数化できないか考えてみましょう</span>。</p>
<h2>最初は直書きし、後でまとめられるとこは関数化を考える</h2>
<p>いきなり関数化を考えろと言われても難しいので、</p>
<p>まずは<span class="red-under">素直に直書きをしていき、1でも述べた同じような処理がないかや</span></p>
<p><span class="red-under">関数化できないかなどを探し、見つけたら関数に直していきましょう</span>。</p>
<p>最初は地道にコツコツやるのが考え方も身につくし、タイピングも早くなっていきます(笑)</p>
<p>&nbsp;</p>
<h2>関数の中に関数を無暗に作らない</h2>
<p>意外と慣れてくるとよくやりがちなのですが、</p>
<p>関数の中に関数をいれてしまうことです。これは考え方というよりは</p>
<p>あまりしない方がよい書き方ですね。</p>
<p>&nbsp;</p>
<p>ただし、処理によっては関数の中に関数を入れた方が効率よい場合もあるので</p>
<p>ここは<span class="red-under">ケースバイケースで対応していきましょう</span>。</p>
<p>&nbsp;</p>
<p>なぜ、関数の中に関数を入れるのがあまりよくないというと、</p>
<p>個人的には、<span class="marker-under">単純にコードが見づらく処理が追いづらくなってきてしまう</span>からです。</p>
<p>&nbsp;</p>
<p><span class="red-under">まさに迷路です</span>……。関数化はいい方法なのですが、関数化しなくてもいい処理を</p>
<p>関数化してしまうとかえってマイナスになります。</p>
<p>負の連鎖の始まりです。</p>
<p>&nbsp;</p>
<h2>階層が深くなりそうなところは関数化を考える</h2>
<p>3と重複しますが</p>
<p>これも1つの関数内で条件分岐や繰り返し処理が深くなりすぎると、</p>
<p><span class="red-under">見づらくなる原因のひとつ＋途中でどこを追っているかわからなくなる原因の</span></p>
<p><span class="red-under">１つ</span>になります。</p>
<p>&nbsp;</p>
<p>階層<span style="font-size: 12px">(条件分岐や繰り返い処理の中に条件分岐や繰り返し処理を入れていく。)<span style="font-size: 16px">は関数内で</span></span></p>
<p><span class="marker-under">最低でも5～6個ぐらいにとどめて深くなりそうなら関数に分割するのが良いでしょう</span>。</p>
<p>&nbsp;</p>
<p>と考え方は、多種多様、十人十色ですが、これらを意識して書くようにしておけば</p>
<p>上達していくのではないでしょうか。</p>
<p>&nbsp;</p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www18.a8.net/0.gif?a8mat=3BQW9V+A3RVEA+4L4G+5Z6WX" alt="" width="1" height="1" border="0" />
<h1>各桁の和を計算する際の考え方</h1>
<p>関数化するにあたり各桁の和を計算する考え方ですが、</p>
<p>&nbsp;</p>
<p>例えば、325という数字の各桁は、それぞれ</p>
<ul>

<li>百の位が3</li>

<li>十の位が2</li>

<li>一の位が5</li>
</ul>
<p>となっています。</p>
<p>&nbsp;</p>
<p>これをそれぞれ足しわせると、</p>
<p>$$3 + 2 + 5 = 10$$</p>
<p>&nbsp;</p>
<p>となり、325の各桁を足し合わせた解は、10となることがわかります。</p>
<p>各桁を抽出するには、以下の式を使って求めることができます。</p>
<div class="sp-info">① n / 10 = あまり x</div>
<div class="sp-info">② ①の商 / 10 = あまり x&#8217;</div>
<p>以降、nが0になるまで①～②を繰り返していきます。</p>
<p>※ あまり x が桁になります。</p>
<p>&nbsp;</p>
<p>例えば325を上記の式に当てはめる場合、</p>
<ol>

<li> 325 / 10 = 32 あまり 5</li>

<li> 32.5 / 10 = 3 あまり 2</li>

<li> 3 / 10 = あまり 3</li>
</ol>
<p>①～③のあまりをそれぞれ足し合わせていくと、10になります。</p>
<p>&nbsp;</p>
<p>これを関数化しないでコードで書いていくと、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Dim num As Integer = 325  ' 計算する変数
        Dim a As Integer = 0  ' 百の位の桁を格納する変数
        Dim b As Integer = 0  ' 十の位の桁をを格納する変数
        Dim c As Integer = 0  ' 一の位の桁をを格納する変数

        a = num Mod 10
        num = Math.Floor(num / 10)
        Console.WriteLine(a)
        If num &gt; 0 Then
            b = num Mod 10
            num = Math.Floor(num / 10)
            Console.WriteLine(b)
            If num &gt; 0 Then
                c = num Mod 10
                num = Math.Floor(num / 10)
                Console.WriteLine(c)
            End If
        End If

        Console.WriteLine(a + b + c)</pre><p>
こんな感じですかね、素直に書いていくと。</p>
<p>ちなみに3桁の計算にしか対応していません。。。</p>
<p>&nbsp;</p>
<h1>関数化してみる</h1>
<p>考え方を活かして、今回は2通りの関数の作成法を紹介していきます。</p>
<h2>関数化①</h2>
<p>まず、素直に書いた関数に工夫を加え、さらに3桁以上にも対応できるようにしていきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Private Function digitSum(ByVal n As Integer) As Integer
        Dim rec As Integer = 0
        While (n &gt; 0)
            rec += n Mod 10
            n = Math.Floor(n / 10)
        End While
        Return rec
    End Function</pre><p>
与えられた数字が0になるまで割り、つど余りを変数recに足していっています。</p>
<h2>再帰処理を考えた関数化②</h2>
<p>①で紹介した関数化とは切り口を変えて、再帰処理を交えた場合の関数化もしてみます。</p>
<p>再帰処理は自分自身を呼び出す関数の処理をいいました。</p>
<p>&nbsp;</p>
<p>コードで書いていくと、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Private Function digitSum(ByVal n As Integer) As Integer
        Dim rec As Integer = 0
        If n &gt; 0 Then
            rec += n Mod 10 + digitSum(Math.Floor(n / 10))
        End If
        Return rec
    End Function</pre><p>
これが再帰処理を交えた各桁の和を計算する関数化になります。</p>
<p>&nbsp;</p>
<p>①と比べてシンプルかつ、1行短くできました。</p>
<p>①のWhile下の処理を1行にしたのが再帰処理の条件文下の処理となっています。</p>
<p>&nbsp;</p>
<p>このようにして考え方次第では、様々な関数の作成方法があります。</p>
<p>結果が同じになれば、自分なりの関数を作ってみるのもいいと思います。</p>
<p>&nbsp;</p>
<p>ただし、あまりにも処理が遅い等はバグの問題にもなりかねないので</p>
<p>それなりの精度を持った関数になるように作りましょう。</p>
<p>&nbsp;</p>
<p style="text-align: center"><a href="//af.moshimo.com/af/c/click?a_id=2411620&amp;p_id=3128&amp;pc_id=7252&amp;pl_id=42614&amp;guid=ON" rel="nofollow"><img loading="lazy" decoding="async" alt="" style="border: none" src="//image.moshimo.com/af-img/2423/000000042614.jpg" width="320" height="100"></a>
<img loading="lazy" decoding="async" alt="" style="border: none" src="//i.moshimo.com/af/i/impression?a_id=2411620&amp;p_id=3128&amp;pc_id=7252&amp;pl_id=42614" width="1" height="1"></p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>任意の数字の各桁の和を足していく関数を作成していきました。</p>
<p>&nbsp;</p>
<p>関数化をしていく上で、考え方のポイントは</p>
<ul>

<li>同じような処理が続く場合は関数化できないか考える</li>

<li>最初は直書きし、後でまとめられるとこは関数化を考える</li>

<li>関数の中に関数を無暗に作らない</li>

<li>階層が深くなりそうなところは関数化を考える</li>
</ul>
<p>といったポイントが経験上あります。</p>
<p>&nbsp;</p>
<div class="w_b_box w_b_w100 w_b_flex w_b_div"><div class="w_b_wrap w_b_wrap_talk w_b_L w_b_flex w_b_div" style=""><div class="w_b_ava_box w_b_relative w_b_ava_L w_b_col w_b_f_n w_b_div"><div class="w_b_icon_wrap w_b_relative w_b_div"><div class="w_b_ava_wrap w_b_direction_L w_b_mp0 w_b_div"><div class="w_b_ava_effect w_b_relative w_b_oh w_b_radius w_b_size_M w_b_div" style="">
<img loading="lazy" decoding="async" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/Icon_3_Ryokucha.png" width="96" height="96" alt="リョクちゃ" class="w_b_ava_img w_b_w100 w_b_h100  w_b_mp0 w_b_img" style="" />
</div></div></div><div class="w_b_name w_b_w100 w_b_lh w_b_name_C w_b_ta_C w_b_mp0 w_b_div">リョクちゃ</div></div><div class="w_b_bal_box w_b_bal_L w_b_relative w_b_direction_L w_b_w100 w_b_div"><div class="w_b_space w_b_mp0 w_b_div"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1" height="38" viewBox="0 0 1 1" fill="transparent" stroke="transparent" stroke-miterlimit="10" class="w_b_db w_b_mp0"><polygon fill="transparent" stroke="transparent" points="0,1 0,1 0,1 0,1 "/></svg></div><div class="w_b_bal_outer w_b_flex w_b_mp0 w_b_relative w_b_div" style=""><div class="w_b_bal_wrap w_b_bal_wrap_L w_b_div"><div class="w_b_bal w_b_relative w_b_talk w_b_talk_L w_b_shadow_L w_b_ta_L w_b_div"><div class="w_b_quote w_b_div">関数化にもコツがあるんだねぇ</div></div></div></div></div></div></div>
<p>&nbsp;</p>
<p>一方で、関数を増やし過ぎるのもかえって見づらくなる原因となるので、</p>
<p>最低限使用性の高いコードを関数化するようにしましょう。</p>
<p>&nbsp;</p>
<p>ある程度関数が出来上がってきたらクラス化してしまうのも手でしょう。</p>
<p>&nbsp;</p>
<p>例えば、テーマに基づいた計算をする関数が多い場合は</p>
<p>それだけのクラスを作ってみましょう。</p>
<p>&nbsp;</p>
<p><span class="marker-under">クラス化すると再利用性にも富んで一気に開発スピードが向上します</span>。</p>
<p>と色々書きましたが、関数化は覚えておいて損はないので覚えておきましょう。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1760"
					data-ulike-nonce="a3c609c6b2"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1760"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_57/">【VB.Net】任意の数字の各桁の和を計算する関数を作ってみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1760</post-id>	</item>
		<item>
		<title>【VB.Net】2000年以降の干支を計算するアプリを作ってみた</title>
		<link>https://dreamparadaisu.com/visualbasic_49/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_49</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sun, 03 Jan 2021 08:19:08 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1554</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 新年あけましておめでとうございます。 今年もよろしくお願いします。 &#160; 変わらずにVB.Netの個人的学習記事を書きつづっていこうと思います。 &#160; さて、今回は...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_49/">【VB.Net】2000年以降の干支を計算するアプリを作ってみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>新年あけましておめでとうございます。</p>
<p>今年もよろしくお願いします。</p>
<p>&nbsp;</p>
<p>変わらずにVB.Netの個人的学習記事を書きつづっていこうと思います。</p>
<p>&nbsp;</p>
<p>さて、今回は2000年以降のある西暦の干支を計算する、</p>
<p>アプリケーションを作成してみたので紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちらです。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_48/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Slide_Show_8-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/Slide_Show_8-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Slide_Show_8-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Slide_Show_8-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_48/" class="blog-card-title-link">【VB.Net】PictureBoxとTimerを使ってスライドショーアプリを作ってみる</a></div><div class="blog-card-excerpt">スライドショー……順番に画像や資料を表示する機能のことを指します。今回WindowsフォームアプリケーションでPictureBoxとTimerを使ってランダムなスライドショーなるものを作ってみました。この過程や各ツールについて紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_48/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_48/" alt="" /></a></div><div class="blog-card-date">2020-12-29 13:06</div></div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>今回作成するWindowsフォームアプリケーションについて、</p>
<p>各章立てて触れていきます。</p>
<h2>準備編：フォームの作成</h2>
<p>以下のフォームを作成します。</p>
<figure id="attachment_mmd_1555" class="wp-block-image aligncenter"><img decoding="async" width="680" height="407" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_2.png" class="attachment-680x613 size-680x613" alt="" loading="lazy" align="center" /></figure>
<p>各①～⑥のコントロールについては、以下の表になります。</p>

<table id="tablepress-30" class="tablepress tablepress-id-30">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">アイテム</th><th class="column-3">コントロール名</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">Label</td><td class="column-3">Label1</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">TextBox</td><td class="column-3">TextBox1</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">Label</td><td class="column-3">Label2</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">Label</td><td class="column-3">Label3</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">Button</td><td class="column-3">Button1</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">PictureBox</td><td class="column-3">PictureBox1</td>
</tr>
</tbody>
</table>
<!-- #tablepress-30 from cache -->
<h2>準備編：干支イラストの準備</h2>
<p>今回PictureBox1に表示する干支の画像を、</p>
<p>下記サイトからダウンロードし使用させていただきました。</p>
<p><a href="https://www.illust-box.jp/sozai/152634/">イラストボックス</a></p>
<p><span style="font-size: 14px">※ゆりゆりのゆりさん、ありがとうございます。</span></p>
<p>&nbsp;</p>
<p>ダウンロードした画像をそれぞれデスクトップ上の</p>
<p>任意に作成したフォルダに保存しています。</p>
<div class="sp-info">C:\Users\ユーザ名\Desktop\Eto</div>
<div>

※ユーザ名には自身のPC端末のユーザ名が割り当てられます。

 

OSによっては異なるかと思います。

</div>
<figure id="attachment_mmd_1558" class="wp-block-image aligncenter"><img decoding="async" width="680" height="373" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_3.png" class="attachment-680x562 size-680x562" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>TextBox1に2000年以降の西暦を入力し、Button1を押すことで</p>
<p>入力された西暦の干支を算出し、求まった干支をLabel3に表示するとともに</p>
<p>PictureBox1にLabel3に表示された干支の画像が表示できることを目的とします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<h2>定数宣言</h2>
<p>2000年より前の西暦は対象外なので、あらかじめ数値を宣言します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 2000年より前の計算をしないのであらかじめ数値を定数として宣言
    ''' &lt;/summary&gt;
    Private Const TARGET_YEAR As Integer = 2000</pre><p>
&nbsp;</p>
<p>干支の画像が保存されているフォルダの場所を定数として宣言します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 干支の画像を格納するフォルダパスを宣言
    ''' &lt;/summary&gt;
    Private Const ETO_PICTURE_DIR As String = "C:\Users\ユーザ名\Desktop\Eto"</pre><p>
※ユーザ名は各自の端末のユーザ名になります。</p>
<h2>干支の計算</h2>
<p>干支の計算については、2000年以降の場合は以下の式で算出することができます。</p>
<ol>

<li>干支 = 入力された西暦 &#8211; 2000</li>

<li>　  = 1で求まった値 + 5</li>

<li>　  = 2で求まった値 / 12</li>

<li>　  = 3の余り</li>
</ol>
<p>が答えになります。</p>
<p>&nbsp;</p>
<p>求まった答えを以下の表に当てはめてあげることで、
その西暦の干支がわかります。</p>
<p>&nbsp;</p>

<table id="tablepress-31" class="tablepress tablepress-id-31">
<thead>
<tr class="row-1">
	<th class="column-1">あまり</th><th class="column-2">干支</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">ねずみ(子)</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">うし(丑)</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">とら(寅)</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">うさぎ(卯)</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">たつ(辰)</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">へび(巳)</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">うま(午)</td>
</tr>
<tr class="row-9">
	<td class="column-1">8</td><td class="column-2">ひつじ(未)</td>
</tr>
<tr class="row-10">
	<td class="column-1">9</td><td class="column-2">さる(申)</td>
</tr>
<tr class="row-11">
	<td class="column-1">10</td><td class="column-2">とり(酉)</td>
</tr>
<tr class="row-12">
	<td class="column-1">11</td><td class="column-2">いぬ(戌)</td>
</tr>
<tr class="row-13">
	<td class="column-1">12</td><td class="column-2">いのしし(亥)</td>
</tr>
</tbody>
</table>
<!-- #tablepress-31 from cache -->
<p>&nbsp;</p>
<p>例えば、2015年の干支を知りたい場合、</p>
<p style="text-align: left">干支 = 2015 &#8211; 2000</p>
<p style="text-align: left">= 15 + 5</p>
<p style="text-align: left">= 20 / 12</p>
<p style="text-align: left">= 8(あまり)</p>
<p>表を参考に、求まった値は8なので、&#8221;未&#8221;年になります。</p>
<p>&nbsp;</p>
<p>この計算をプログラムにてコードで書くと、以下のようになります。</p>
<div class="information">((CInt(入力された年) &#8211; 2000) + 5 ) Mod 12</div>
<div>※ Modは余りを求める、算術演算子になります。</div>
<h2>干支の計算：あまりを干支に変換</h2>
<p>このままでは<span class="red-under">求まった値が何の干支なのかプログラムではわからない</span>ので、</p>
<p>値を干支に変換する関数を作成します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 算出されたあまりから干支を取得
    ''' &lt;/summary&gt;
    ''' &lt;param name="eto"&gt;&lt;/param&gt;
    ''' &lt;returns&gt;&lt;/returns&gt;
    Private Function GetEto(ByVal eto As Integer) As String
        Select Case eto
            Case 1 : Return "Nezumi"
            Case 2 : Return "Ushi"
            Case 3 : Return "Tora"
            Case 4 : Return "Usagi"
            Case 5 : Return "Tatsu"
            Case 6 : Return "Hebi"
            Case 7 : Return "Uma"
            Case 8 : Return "Hitsuji"
            Case 9 : Return "Saru"
            Case 10 : Return "Tori"
            Case 11 : Return "Inu"
            Case 12 : Return "Inoshishi"
            Case Else : Return ""
        End Select
    End Function</pre><p>
これとは別に、ローマ字表記を日本語表記に変換する関数も作成します。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 干支の名前を表示用に変換し、結果を返す
    ''' &lt;/summary&gt;
    ''' &lt;param name="eto"&gt;&lt;/param&gt;
    ''' &lt;returns&gt;&lt;/returns&gt;
    Private Function ConvertDispNameEto(ByVal eto As String) As String
        Select Case eto
            Case "Nezumi" : Return "子"
            Case "Ushi" : Return "丑"
            Case "Tora" : Return "寅"
            Case "Usagi" : Return "卯"
            Case "Tatsu" : Return "辰"
            Case "Hebi" : Return "巳"
            Case "Uma" : Return "午"
            Case "Hitsuji" : Return "未"
            Case "Saru" : Return "申"
            Case "Tori" : Return "酉"
            Case "Inu" : Return "戌"
            Case "Inoshishi" : Return "亥"
            Case Else : Return ""
        End Select
    End Function</pre><p></p>
<h2>計算ボタン押下後の処理</h2>
<p>入力値がない場合は処理をしないようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 計算ボタン押下後
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値が空白でないかチェック
        ' 空白なら処理をしない
        ' 2000年より前でも処理をしない
        If Me.TextBox1.Text &lt;&gt; "" And CInt(Me.TextBox1.Text) &gt;= TARGET_YEAR Then


        End If
    End Sub</pre><p>
&nbsp;</p>
<p>入力値がある場合、以下の流れで処理を進めていきます。</p>
<ol>

<li>干支画像ファイルのパスを取得</li>

<li>入力された西暦から干支を計算</li>

<li>2で求まった値からローマ字表記の干支に変換</li>

<li>結果をLabel3に表示</li>

<li>PictureBox1にLabel3に表示されている干支の画像を表示</li>
</ol>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">''' &lt;summary&gt;
    ''' 計算ボタン押下後
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値が空白でないかチェック
        ' 空白なら処理をしない
        ' 2000年より前でも処理をしない
        If Me.TextBox1.Text &lt;&gt; "" And CInt(Me.TextBox1.Text) &gt;= TARGET_YEAR Then

            ' 干支画像の取得
            Dim files As String() = System.IO.Directory.GetFiles(ETO_PICTURE_DIR)

            ' 入力された西暦から干支を計算
            Dim eto As Integer = ((CInt(Me.TextBox1.Text) - TARGET_YEAR) + 5) Mod 12
            Dim resEto As String = GetEto(eto)

            ' 結果をLabelに表示
            Me.Label3.Text = ConvertDispNameEto(resEto)

            ' 干支の画像を表示
            ' PicturaBox1に表示される画像サイズを変更 → Zoom
            PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
            PictureBox1.Image = System.Drawing.Image.FromFile(ETO_PICTURE_DIR + "\" + resEto + ".png")
        End If
    End Sub</pre><p>
&nbsp;</p>
<h1>実行編</h1>
<p>それでは実行をしていきます。</p>
<figure id="attachment_mmd_1561" class="wp-block-image aligncenter"><img decoding="async" width="798" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">プログラム起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1562" class="wp-block-image aligncenter"><img decoding="async" width="798" height="479" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">西暦を入力</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1563" class="wp-block-image aligncenter"><img decoding="async" width="797" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">干支を計算ボタンを押下後</p>
<p>&nbsp;</p>
<p>ちなみに2021年で実行すると……</p>
<figure id="attachment_mmd_1564" class="wp-block-image aligncenter"><img decoding="async" width="799" height="476" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/ETO_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>言わずもがなですが…丑になります。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BOP7Y+9QOC36+2PEO+1HRVCX" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www26.a8.net/svt/bgt?aid=201026734589&amp;wid=001&amp;eno=01&amp;mid=s00000012624009032000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www17.a8.net/0.gif?a8mat=3BOP7Y+9QOC36+2PEO+1HRVCX" alt="" width="1" height="1" border="0" />
<h1></h1>
<h1>まとめ</h1>
<p>今回、入力された年の干支を教えてくれるアプリケーションを作成し、</p>
<p>その年の干支の算出方法や表示の仕方などを解説していきました。</p>
<p>&nbsp;</p>
<p>読者の方の何らかの参考になれば嬉しいです。</p>
<p>今年もこんな感じで作ったプログラムや学んだことを紹介していきます。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1554"
					data-ulike-nonce="e79a218aa8"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1554"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_49/">【VB.Net】2000年以降の干支を計算するアプリを作ってみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1554</post-id>	</item>
		<item>
		<title>【VB.Net】String型からDateTime型への変換</title>
		<link>https://dreamparadaisu.com/visualbasic_46/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_46</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 19 Dec 2020 07:16:48 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1487</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、タイトルの通りString型からDatetime型へ変換をする方法を紹介していきます。 &#160; 文字列として与えられた2つの日付をDateTime型に変換し、どちらの...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_46/">【VB.Net】String型からDateTime型への変換</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、タイトルの通りString型からDatetime型へ変換をする方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>文字列として与えられた2つの日付をDateTime型に変換し、どちらの日付が最新日かどうかを</p>
<p>判定し結果を返すといった例を交えて解説をしていきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら、</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_45/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/substring_1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/substring_1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/substring_1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/substring_1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_45/" class="blog-card-title-link">【VB.Net】Substringメソッドを使用した文字列内情報の抽出</a></div><div class="blog-card-excerpt">これまでにMid関数やLeft/Right関数を使用して文字列内情報を抽出する方法を紹介していきましたが、今回はStringクラスで提供されているSubstringメソッドを使用した方法を例を交えて紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_45/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_45/" alt="" /></a></div><div class="blog-card-date">2020-12-18 07:35</div></div></div>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>日付書式(フォーマット)について</h1>
<p>String型の日付をDateTime型へ変換していく前に、日付書式について触れていきます。</p>
<p>日付書式とは、</p>
<blockquote>ISO 8601（1988年）では、&#8221;YYYY-MM-DD&#8221;方式（年・月・日の順番で、紀年法による西暦（CE）で年を数字4桁、月と日とを各々数字2桁で表す方式）と定められている。

<a href="https://ja.wikipedia.org/wiki/%E6%97%A5%E4%BB%98#:~:text=ISO%208601%EF%BC%881988%E5%B9%B4%EF%BC%89%E3%81%A7%E3%81%AF,%E3%81%A8%E5%AE%9A%E3%82%81%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82">日付 &#8211; Wikipedia</a></blockquote>
<p>とネットでは解説されています。</p>
<p>&nbsp;</p>
<p><span class="marker-under">Yを年、Mを月、Dを日とすることで、日付を表すことができます</span>。</p>
<p>YやM、Dの数によって表示のされ方も変えることができます。</p>
<p>&nbsp;</p>
<p>例えば、YYYY-MM-DDであれば、</p>
<p><span class="marker-under">2020-12-19と日付を表示することができます</span>。</p>
<p>&nbsp;</p>
<p>以下に、一覧を記します。</p>

<table id="tablepress-25" class="tablepress tablepress-id-25">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">書式</th><th class="column-3">詳細</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">d</td><td class="column-3">月の日にち<br />
例) 1 ～ 31</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">dd</td><td class="column-3">月の日にち<br />
2桁表示<br />
例) 01 ~ 31</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">M</td><td class="column-3">月<br />
例) 1 ~ 12</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">MM</td><td class="column-3">月<br />
2桁表示<br />
例) 01 ~ 12</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">yy</td><td class="column-3">年<br />
末尾2桁表示<br />
例) 00 ~ 99</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">yyy</td><td class="column-3">年<br />
3桁以上の表示<br />
例) 001 ~ 999</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">yyyy</td><td class="column-3">年<br />
4桁表示<br />
例) 0001 ~ 9999</td>
</tr>
</tbody>
</table>
<!-- #tablepress-25 from cache -->
<h2>String型からDateTime型への変換 : DateTime.Parse()</h2>
<p>String型の日付からDateTime型に変換するには、</p>
<p><span class="marker-under">DateTime.Parse()を使用します</span>。</p>
<p>&nbsp;</p>
<p>Parseメソッドは以下の引数を渡す必要があります。</p>
<div class="sp-info">DateTime.Parse(&#8220;文字列型の日付データ&#8221;)</div>
<p>引数を渡すことで、引数をDateTime型に変換したデータを戻り値として返します。</p>
<p>&nbsp;</p>
<p>ただし、<span class="red-under">引数として与えられたデータの書式が日付書式と一致しない場合は、</span></p>
<p><span class="red-under">エラーとなってしまいます</span>。</p>
<p>&nbsp;</p>
<p>ここでいう正しい日付書式とは、</p>
<p><strong>yyyy-MM-dd</strong>や<strong>yyyy/MM/dd</strong>として日付データが表せているかになります。</p>
<div class="information">yyyy-MM-ddなら2020-12-19</div>
<div class="information">yyyy/MM/ddなら2020/12/19</div>
<p>&nbsp;</p>
<p>yyyyMMddなら20201219となるのですが、</p>
<p>こちらだと<span class="red-under">Parseメソッドではエラーとなります</span>。</p>
<p>&nbsp;</p>
<p>これらを踏まえ、コードで書くと以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Dim date1 As DateTime = DateTime.Parse("2020/12/19")
' 結果
' 2020/12/19 : DateTime型</pre><p>
&nbsp;</p>
<h2>正しく変換できているか判定　：　DateTime.TryParse()</h2>
<p>DateTime.Parse()では、日付書式が違うとエラーになると説明をしました。</p>
<p>しかしながら都度エラーが出ていたら、アプリケーションにとしては使いづらいですよね。</p>
<p>&nbsp;</p>
<p>そんな時に、<span class="marker-under">正しく日付に変換できているかどうかをチェックしてくれる関数</span>があります。</p>
<p>それが、DateTime.TryParse()になります。</p>
<p>&nbsp;</p>
<p>これは以下のようにして使うことができます。</p>
<div class="sp-info">DateTime.TryParse(&#8220;文字列型の日付データ&#8221;,&#8221;変換結果を格納する変数&#8221;)</div>
<p>引数に<strong>文字列型の日付データ</strong>とそれを<strong>変換した結果を格納する変数</strong>をそれぞれ渡します。</p>
<p>&nbsp;</p>
<p>戻り値は、<span class="marker-under">日付が正しく変換できるかどうかをチェックしたBoolean型で返されます</span>。</p>
<p>正しく変換された場合は、Trueを返し、されない場合はFalseを返します。</p>
<p>&nbsp;</p>
<p>これを使うことで、<span class="marker-under">事前に変換できたかどうかのチェックをさせることができます</span>。</p>
<p>踏まえて、使い方をコードで書くと以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Dim date As DateTime = Nothing
If DateTime.TryParse("2020/12/19", date) Then
    ' 正しく変換できた場合の処理
Else
    ' 正しく変換できなかった場合の処理

End If</pre><p>
それでは、例としてフォームを作成して変換について理解を深めていきます。</p>
<p>&nbsp;</p>
<h1>準備編：フォームの作成</h1>
<p>今回は以下のようなフォームを作成します。</p>
<figure id="attachment_mmd_1494" class="wp-block-image aligncenter"><img decoding="async" width="680" height="395" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_6.png" class="attachment-680x595 size-680x595" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>

<table id="tablepress-26" class="tablepress tablepress-id-26">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">Label</td><td class="column-3">Label1</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">TextBox</td><td class="column-3">TextBox1</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">Label</td><td class="column-3">Label3</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">Label</td><td class="column-3">Label4</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">Label</td><td class="column-3">Label2</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">TextBox</td><td class="column-3">TextBox2</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">Button</td><td class="column-3">Button1</td>
</tr>
</tbody>
</table>
<!-- #tablepress-26 from cache -->
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>日付1(TextBox1)と日付2(TextBox2)に入力された文字列型の日付をボタンを押すことで、</p>
<p>DateTime型に変換した後、日付1と日付2のどちらが最新の日付かを判定し、</p>
<p><span class="marker-under">最新の日付をLabel4に表示することを目的</span>とします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<p>前述で紹介した変換方法を踏まえて、作成したコードがこちらになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestDateTime
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 変数の宣言
        Dim date1 As DateTime = Nothing
        Dim date2 As DateTime = Nothing

        ' 入力がされていなければ処理をしない
        If Me.TextBox1.Text &lt;&gt; "" And Me.TextBox2.Text &lt;&gt; "" Then
            ' 正しく変換されたかどうかを判定
            ' DateTime.TryParse()
            ' 引数1 : 文字列型の日付データ
            ' 引数2 : 結果を格納する変数
            If DateTime.TryParse(Me.TextBox1.Text, date1) And
                DateTime.TryParse(Me.TextBox2.Text, date2) Then
                ' 正しく変換されていれば処理を行う

                ' 日付の比較を行う
                If date1 &gt; date2 Then
                    ' date1のほうが最新
                    Me.Label4.Text = date1
                Else
                    ' date2のほうが最新
                    Me.Label4.Text = date2
                End If

            Else
                ' 日付書式が違います。
                MessageBox.Show("入力された日付書式が違います。", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        End If

    End Sub
End Class</pre><p>
今回は、アプリケーションの操作性等も考慮してTryParse()を使っています。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BQCQ7+CNGMK2+CO4+104KZL" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=201103855765&amp;wid=001&amp;eno=01&amp;mid=s00000001642006068000&amp;mc=1" alt="" width="350" height="160" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www17.a8.net/0.gif?a8mat=3BQCQ7+CNGMK2+CO4+104KZL" alt="" width="1" height="1" border="0" />
<h1>実行編</h1>
<p>それでは実際に作成したコードを実行し、動作を確認していきます。</p>
<figure id="attachment_mmd_1493" class="wp-block-image aligncenter"><img decoding="async" width="794" height="474" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">プログラム起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1497" class="wp-block-image aligncenter"><img decoding="async" width="791" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">日付をそれぞれ入力しています。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1498" class="wp-block-image aligncenter"><img decoding="async" width="796" height="473" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">ボタンを押し判定した結果になります。</p>
<p>&nbsp;</p>
<p>日付書式が正しくない場合は、以下のようになります。</p>
<figure id="attachment_mmd_1499" class="wp-block-image aligncenter"><img decoding="async" width="798" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>例えば、日付書式がそれぞれ違う場合の比較の場合</p>
<figure id="attachment_mmd_1500" class="wp-block-image aligncenter"><img decoding="async" width="795" height="472" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/String_to_DateTime_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>正しく判定をし、最新の日付を返してくれることが確認できます。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Striung型からDateTime型への変換方法について、例を交えて変換の考え方や</p>
<p>変換に使う関数の使い方について解説をしていきました。</p>
<p>&nbsp;</p>
<p>入力値として日付が与えられることは</p>
<p>開発するアプリケーションによっては頻繁に出くわすかもしれません。</p>
<p>&nbsp;</p>
<p>そんな時に今回紹介した関数を思い出して使っていただけたらなと思います。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1487"
					data-ulike-nonce="a7cc3e0cf8"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1487"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_46/">【VB.Net】String型からDateTime型への変換</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1487</post-id>	</item>
		<item>
		<title>【VB.Net】Substringメソッドを使用した文字列内情報の抽出</title>
		<link>https://dreamparadaisu.com/visualbasic_45/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_45</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Thu, 17 Dec 2020 22:35:43 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1473</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回も与えられた文字列内の任意情報を抽出する方法を紹介していきます。 &#160; これまでにMid関数やLeft関数、Right関数を使用した文字列内情報の抽出の方法や 考え方を...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_45/">【VB.Net】Substringメソッドを使用した文字列内情報の抽出</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回も与えられた文字列内の任意情報を抽出する方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>これまでにMid関数やLeft関数、Right関数を使用した文字列内情報の抽出の方法や</p>
<p>考え方を紹介し、各関数の使い方を例を交えて解説していきました。</p>
<p>&nbsp;</p>
<p>今回はStringクラスで提供されているSubstringメソッドを使用して</p>
<p>文字列内の任意情報を抽出していきます。</p>
<p>&nbsp;</p>
<p>ちなみに過去の文字列内情報に関する記事はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_43/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_43/" class="blog-card-title-link">【VB.Net】Mid関数を使った文字列内の情報を抽出する方法</a></div><div class="blog-card-excerpt">入力値として受け取られる文字列には複数の情報が含まれている場合があります。この場合、受け取った文字列から各種情報を抽出するためにVB.NetにはMid関数が用意されていません。今回は、Mid関数の使い方から抽出の考え方を紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_43/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_43/" alt="" /></a></div><div class="blog-card-date">2020-12-11 21:57</div></div></div>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_44/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_44/" class="blog-card-title-link">【VB.Net】LeftとRight関数を使って文字列内の情報を抽出</a></div><div class="blog-card-excerpt">前回はMid関数を使って文字列内の情報を抽出する方法を紹介しました。今回はLeft関数とRight関数を駆使して文字列内の情報を抽出する方法を例を交えて紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_44/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_44/" alt="" /></a></div><div class="blog-card-date">2020-12-15 21:43</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>Substring関数</h1>
<p>この関数は、以下の記述で使用することができます。</p>
<div class="sp-info">文字列.Substring(抽出開始位置、抽出する文字列の長さ)</div>
<p>&nbsp;</p>
<p>イメージとしては以下のようになります。</p>
<figure id="attachment_mmd_1478" class="wp-block-image aligncenter"><img decoding="async" width="680" height="349" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/substring_2.png" class="attachment-680x525 size-680x525" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>コードで書くと、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Dim fruit As String = "Apple".Substring(3,1)
' l がfruit変数に代入される</pre><p>
&nbsp;</p>
<h1>準備編：フォームの作成</h1>
<p>フォームについては、前回作成したフォームを再利用します。</p>
<figure id="attachment_mmd_1450" class="wp-block-image aligncenter"><img decoding="async" width="813" height="486" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>適当な入力値を入力し、ボタンを押すことでそれぞれ指定の位置から情報を抽出し、</p>
<p>それぞれ抽出した情報を表示することを目的とします。</p>
<p>&nbsp;</p>
<p>ただし、<span class="red-under">Substringメソッドを使用して行えるコードとする</span>。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<p>それではプログラムを作成していきます。</p>
<p>&nbsp;</p>
<p>まずは、フォームデザイン上でボタンコントロールをダブルクリックし、</p>
<p>コードビューにボタンイベントを作成します。</p>
<div id="urvanov-syntax-highlighter-5fdb3b5900d3f813743795" class="urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-arial urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always">
<div class="urvanov-syntax-highlighter-main">
<pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


    End Sub
End Class</pre>
</div>
</div>
<p>&nbsp;</p>
<p>入力値ボックスに入力がされていれば処理をするようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then

    End Sub
End Class</pre><p>
ここからは抽出するための準備をしていきます。</p>
<p>&nbsp;</p>
<p>考え方としては、<span class="red-under">前回の記事と同じになりますので、コードのみを変えていきます</span>。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号コード
    Private Const NameCode As Integer = 5     　' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then
            ' Left関数とRight関数を使って抽出してみる。
            Dim place As String = Me.TextBox1.Text.Substring(0, PlaceCode)
            Dim tele As String = Me.TextBox1.Text.Substring(PlaceCode, TeleCode)
            Dim name As String = Me.TextBox1.Text.Substring(PlaceCode + TeleCode, NameCode)

            ' テキストボックスへ出力
            Me.TextBox2.Text = place
            Me.TextBox3.Text = tele
            Me.TextBox4.Text = name
        End If
    End Sub
End Class</pre><p>
&nbsp;</p>
<p>それぞれ、所在地コードを抽出する場合は、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Me.TextBox1.Text.Substring(0, PlaceCode)</pre><p>
<span class="marker-under">開始位置を0番目</span>として、<span class="marker-under">文字列の長さにPlaceCodeの長さ</span>を引数として渡しています。</p>
<p>&nbsp;</p>
<p>電話番号コードを抽出する場合は、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Me.TextBox1.Text.Substring(PlaceCode, TeleCode)</pre><p>
<span class="marker-under">所在地コードの長さを開始位置</span>として、<span class="marker-under">TeleCodeの長さ</span>を引数として渡しています。</p>
<p>そうすることで開始位置が3番目から、10の長さを抽出し結果を返します。</p>
<p>&nbsp;</p>
<p>氏名コードを抽出する場合は、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Me.TextBox1.Text.Substring(PlaceCode + TeleCode, NameCode)</pre><p>
<span class="marker-under">所在地コードと電話番号コードの長さを足しわせた位置を開始位置</span>として、</p>
<p><span class="marker-under">NameCodeの長さ</span>を引数として渡しています。</p>
<p>&nbsp;</p>
<h1>実行編</h1>
<p>作成したコードを実行していきます。</p>
<figure id="attachment_mmd_1466" class="wp-block-image aligncenter"><img decoding="async" width="798" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_3-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ボタンを押すと、</p>
<figure id="attachment_mmd_1467" class="wp-block-image aligncenter"><img decoding="async" width="798" height="473" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_2-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BO5NS+68GFUA+42SG+66H9D" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www21.a8.net/svt/bgt?aid=201001384377&amp;wid=001&amp;eno=01&amp;mid=s00000019024001038000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3BO5NS+68GFUA+42SG+66H9D" alt="" width="1" height="1" border="0" />
<h1>まとめ</h1>
<p>Substringメソッドを使用した文字列内の任意情報を抽出する</p>
<p>方法について考え方や使い方を解説しました。</p>
<p>&nbsp;</p>
<div class="sp-info">抽出する文字列.Substring(開始位置,抽出する文字列の長さ)</div>
<p>を覚えておけばすぐに使用することができます。</p>
<p>&nbsp;</p>
<p>文字列内の情報を抽出する方法としては様々な方法があります。</p>
<p>&nbsp;</p>
<p>用途に応じて、自身が使いやすい方法で試していただければなと思います。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1473"
					data-ulike-nonce="584cb26866"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1473"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_45/">【VB.Net】Substringメソッドを使用した文字列内情報の抽出</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1473</post-id>	</item>
		<item>
		<title>【VB.Net】LeftとRight関数を使って文字列内の情報を抽出</title>
		<link>https://dreamparadaisu.com/visualbasic_44/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_44</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Tue, 15 Dec 2020 12:43:28 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1460</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、前回に紹介したMid関数の他に文字列内の情報を抽出する方法として、 Left関数とRight関数があります。 &#160; この関数の使い方を例を交えて紹介していきつつ、 ...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_44/">【VB.Net】LeftとRight関数を使って文字列内の情報を抽出</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、前回に紹介したMid関数の他に文字列内の情報を抽出する方法として、</p>
<p>Left関数とRight関数があります。</p>
<p>&nbsp;</p>
<p>この関数の使い方を例を交えて紹介していきつつ、</p>
<p>Mid関数と組み合わせて使うことで抽出のパターンを覚えていただけたらなと思います。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら、</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_43/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_4-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_43/" class="blog-card-title-link">【VB.Net】Mid関数を使った文字列内の情報を抽出する方法</a></div><div class="blog-card-excerpt">入力値として受け取られる文字列には複数の情報が含まれている場合があります。この場合、受け取った文字列から各種情報を抽出するためにVB.NetにはMid関数が用意されていません。今回は、Mid関数の使い方から抽出の考え方を紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_43/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_43/" alt="" /></a></div><div class="blog-card-date">2020-12-11 21:57</div></div></div>
<p>&nbsp;</p>
<p style="text-align: center"><a href="https://px.a8.net/svt/ejp?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" rel="nofollow">
<img loading="lazy" decoding="async" src="https://www27.a8.net/svt/bgt?aid=220503664100&amp;wid=001&amp;eno=01&amp;mid=s00000015623001010000&amp;mc=1" alt="" width="468" height="60" border="0"></a>
<img loading="lazy" decoding="async" src="https://www13.a8.net/0.gif?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" alt="" width="1" height="1" border="0"></p>
<p>&nbsp;</p>
<h1>Left関数とRight関数</h1>
<p>Left関数は、<span class="marker-under">文字列の左端を開始位置</span>として、</p>
<p><span class="red-under">任意の長さの文字を抽出対象の文字列内から抽出してくれる関数</span>です。</p>
<p>&nbsp;</p>
<p>一方でRight関数は、<span class="marker-under">文字列の右端を開始位置</span>として、</p>
<p><span class="red-under">任意の長さの文字を抽出対象の文字列内から抽出してくれる関数</span>です。</p>
<p>&nbsp;</p>
<p>それぞれ書き方としては、</p>
<div class="sp-info">Microsoft.VisualBasic.Left(抽出対象文字列, 抽出する文字列の長さ)</div>
<div class="sp-info">Microsoft.VisualBasic.Right(抽出対象文字列, 抽出する文字列の長さ)</div>
<p>※Imports Microsoft.VisualBesicと記述していれば、</p>
<p>Microsoft.VisualBasicに関しては省略ができます。</p>
<p>&nbsp;</p>
<p>それぞれ、<span class="marker-under"><span style="font-size: 18px"><strong>第1引数</strong></span>に抽出したい文字列</span></p>
<p><span class="marker-under"><span style="font-size: 18px"><strong>第2引数</strong></span>には抽出する文字列の長さ</span>を引数として渡します。</p>
<p>&nbsp;</p>
<h1>準備編：フォームの作成</h1>
<p>前回作成したフォームがある読者の方は、前回のフォームを使ってください。</p>
<p>そちらを使ってコードを書いていきます。</p>
<figure id="attachment_mmd_1450" class="wp-block-image aligncenter"><img decoding="async" width="813" height="486" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>適当な入力値を入力し、ボタンを押すことでそれぞれ指定の位置から情報を抽出し、</p>
<p>それぞれ抽出した情報を表示することを目的とします。</p>
<p>&nbsp;</p>
<p>ただし、<span class="red-under">Left関数とRight関数、Mid関数を駆使して行えるコードとする</span>。</p>
<p>どちらか一方のみでは禁止とする。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<p>それではプログラムを作成していきます。</p>
<p>&nbsp;</p>
<p>まずは、フォームデザイン上でボタンコントロールをダブルクリックし、</p>
<p>コードビューにボタンイベントを作成します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub
End Class</pre><p>
&nbsp;</p>
<p>入力値ボックスに入力がされていれば処理をするようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then

    End Sub
End Class</pre><p>
ここからは抽出するための準備をしていきます。</p>
<p>&nbsp;</p>
<p>考え方としては、<span class="red-under">前回の記事と同じでコードのみを変えていきます</span>。</p>
<p>&nbsp;</p>
<p>入力値として与えられる文字列には、</p>
<ul>

<li>所在地コード(3桁)</li>

<li>電話番号(10桁)</li>

<li>氏名コード(5桁)</li>
</ul>
<p>順に18桁が与えられます。</p>
<p>&nbsp;</p>
<p>これを踏まえ、あらかじめ桁数がわかっているので桁数を定数として宣言しておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号
    Private Const NameCode As Integer = 5       ' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then

        End If
    End Sub
End Class</pre><p>
まずは、Left関数を使って所在地コードを抽出していきます。</p>
<p>&nbsp;</p>
<p>書き方としては、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Microsoft.VisualBasic.Left(TextBox1.Text, PlaceCode)</pre><p>
と書くことで、入力値の左端から所在地コードの長さ分を抽出してくれます。</p>
<p>&nbsp;</p>
<p>一方でRight関数を使って氏名コードを抽出する書き方としては、
</p><pre class="urvanov-syntax-highlighter-plain-tag">Microsoft.VisualBasic.Right(TextBox1.Text, NameCode)</pre><p>
と書くことで、入力値の右端から氏名コードの長さ分を抽出してくれます。</p>
<p>&nbsp;</p>
<p>最後に、Mid関数を使って電話番号を抽出していきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Mid(TextBox1.Text, PlaceCode + 1, TeleCode)</pre><p>
全てのコードを合わせると以下の形になります。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号コード
    Private Const NameCode As Integer = 5     ' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then
            ' Left関数とRight関数を使って抽出してみる。
            Dim place As String = Microsoft.VisualBasic.Left(TextBox1.Text, PlaceCode)
            Dim tele As String = Mid(TextBox1.Text, PlaceCode + 1, TeleCode)
            Dim name As String = Microsoft.VisualBasic.Right(TextBox1.Text, NameCode)

            ' テキストボックスへ出力
            Me.TextBox2.Text = place
            Me.TextBox3.Text = tele
            Me.TextBox4.Text = name
        End If
    End Sub
End Class</pre><p>
&nbsp;</p>
<h1>実行編</h1>
<p>作成したコードを実行していきます。</p>
<figure id="attachment_mmd_1451" class="wp-block-image aligncenter"><img decoding="async" width="796" height="480" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ボタンを押すと、</p>
<figure id="attachment_mmd_1452" class="wp-block-image aligncenter"><img decoding="async" width="799" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>例を1つ実行します。</p>
<figure id="attachment_mmd_1466" class="wp-block-image aligncenter"><img decoding="async" width="798" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_3-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<figure id="attachment_mmd_1467" class="wp-block-image aligncenter"><img decoding="async" width="798" height="473" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_2-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>他の入力値でも桁数があっていれば正しく抽出することができます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BK7WA+78RVQQ+3GWO+6L1Y9" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www26.a8.net/svt/bgt?aid=200817658438&amp;wid=001&amp;eno=01&amp;mid=s00000016188001106000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www17.a8.net/0.gif?a8mat=3BK7WA+78RVQQ+3GWO+6L1Y9" alt="" width="1" height="1" border="0" />
<h1>まとめ</h1>
<p>Left関数とRight関数について、例を交えて使い方や</p>
<p>データ抽出のパターンについて紹介していきました。</p>
<p>&nbsp;</p>
<p>これを機に文字列内の情報を抽出する際は、</p>
<p>これら関数を使った方法を試していただければ嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1460"
					data-ulike-nonce="57550be8ca"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1460"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_44/">【VB.Net】LeftとRight関数を使って文字列内の情報を抽出</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1460</post-id>	</item>
		<item>
		<title>【VB.Net】Mid関数を使った文字列内の情報を抽出する方法</title>
		<link>https://dreamparadaisu.com/visualbasic_43/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_43</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Fri, 11 Dec 2020 12:57:52 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1444</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; プログラムを作っていて、ふとこんなことに悩まされることはありませんか？ &#160; 入力値として受け取った文字列に複数の情報が含まれていて、 これをそれぞれ文字列内から取り出して...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_43/">【VB.Net】Mid関数を使った文字列内の情報を抽出する方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>プログラムを作っていて、ふとこんなことに悩まされることはありませんか？</p>
<p>&nbsp;</p>
<p>入力値として受け取った文字列に複数の情報が含まれていて、</p>
<p>これをそれぞれ文字列内から取り出して処理をするといった</p>
<p>問題に直面することがないでしょうか。</p>
<p>&nbsp;</p>
<p>そんな時に使えるのがMid関数になります。</p>
<p>今回は、Mid関数と呼ばれる関数について紹介をしていきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_42/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Two_To_Ten_7-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/12/Two_To_Ten_7-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Two_To_Ten_7-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/12/Two_To_Ten_7-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_42/" class="blog-card-title-link">【VB.Net】2進数を10進数に変換する関数を作成</a></div><div class="blog-card-excerpt">VB.Netで2進数を10進数に変換する関数を作成していく過程で、2進数から10進数に変換する方法を例を交えて紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_42/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_42/" alt="" /></a></div><div class="blog-card-date">2020-12-09 00:23</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www27.a8.net/svt/bgt?aid=220503664100&amp;wid=001&amp;eno=01&amp;mid=s00000015623001010000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>Mid関数とは</h1>
<ul>

<li>第1引数に、抽出したい文字列を指定</li>

<li>第2引数に、開始位置(1から)を指定</li>

<li>第3引数に、抽出する文字列の長さを指定(※省略可能)</li>
</ul>
<p>これらを指定することで第1引数の文字列から指定の位置の長さを持つ文字列を抽出し、</p>
<p>戻り値として返してくれる関数になります。</p>
<p>&nbsp;</p>
<h1>Mid関数の書き方</h1>
<p>書き方としては、</p>
<div class="sp-info">Mid(&#8220;抽出したい文字列&#8221;、抽出開始位置、[抽出する文字列の長さ])</div>
<p>と書くことで使うことができます。</p>
<p>&nbsp;</p>
<p>実際に例に則って使い方を学んでいきましょう。</p>
<p>&nbsp;</p>
<h1>準備編：フォームの作成</h1>
<p>今回は以下のフォームを作成します。</p>
<figure id="attachment_mmd_1450" class="wp-block-image aligncenter"><img decoding="async" width="813" height="486" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>入力値から情報を3つ抽出し表示するプログラムを作成していきます。</p>
<p>&nbsp;</p>
<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>適当な入力値を入力し、ボタンを押すことでそれぞれ指定の位置から情報を抽出し、</p>
<p>それぞれ抽出した情報を表示することを目的とします。<a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4LIIYA+50+2HL3E9" rel="nofollow">
</a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www12.a8.net/0.gif?a8mat=3BI0VE+4LIIYA+50+2HL3E9" alt="" width="1" height="1" border="0" />
<h1>プログラム編</h1>
<p>それではプログラムを作成していきます。</p>
<p>&nbsp;</p>
<p>まずは、フォームデザイン上でボタンコントロールをダブルクリックし、</p>
<p>コードビューにボタンイベントを作成します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub
End Class</pre><p>
&nbsp;</p>
<p>入力値ボックスに入力がされていれば処理をするようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then

    End Sub
End Class</pre><p>
ここからは抽出するための準備をしていきます。</p>
<p>&nbsp;</p>
<p>考え方として、入力値に既に含まれる情報がわかっている場合、</p>
<p>今回は、入力される文字列には、</p>
<p><span class="marker">所在地コード、電話番号、氏名コードの順番に18桁の情報が含まれている</span>とします。</p>
<p>&nbsp;</p>
<p>それを踏まえて下準備をすると、以下のコードになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号
    Private Const NameCode As Integer = 5       ' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then

        End If
    End Sub
End Class</pre><p>
<span class="marker-under">定数として、各情報の桁数(文字列の長さ)を代入</span>しています。</p>
<p>&nbsp;</p>
<p>これら定数を元に入力値から各情報を抽出するコードを書いていきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号コード
    Private Const NameCode As Integer = 5     ' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then
            Dim place As String = Mid(TextBox1.Text, 1, PlaceCode)
            Dim tele As String = Mid(TextBox1.Text, PlaceCode + 1, TeleCode)
            Dim name As String = Mid(TextBox1.Text, PlaceCode + TeleCode + 1, NameCode)

        End If
    End Sub
End Class</pre><p>
各作成した変数(place,tele,name)に入力値から抽出した情報を代入しています。</p>
<p>&nbsp;</p>
<p>各変数を例に説明していくと、</p>
<p>place変数には<span class="marker-under">所在地コードを入力値から抽出して代入</span>しています。</p>
<p>&nbsp;</p>
<p>抽出方法としては、</p>
<div class="sp-info">Mid(入力値、1、PlaceCode)</div>
<p>とそれぞれ引数を渡すことで、</p>
<p><span class="red-under">入力値の1文字目から長さ3の文字を抽出し代入</span>しています。</p>
<p>&nbsp;</p>
<p>tele変数には<span class="marker-under">電話番号を入力値から抽出して代入</span>しています。</p>
<p>&nbsp;</p>
<p>これは、</p>
<div class="sp-info">Mid(入力値、PlaceCode + 1、TeleCode)</div>
<p>とそれぞれ渡すことで、</p>
<p>入力値の<span class="red-under">PlaceCodeの長さ+1をした位置から長さ10の文字を抽出し代入</span>しています。</p>
<p>&nbsp;</p>
<p>+1をしているのは<span class="marker-under">開始位置が0からではなく1からになる</span>ために<span class="red-under">その分の調整</span>になります。</p>
<p>+1をしないで抽出をしてしまうと、PlaceCodeの最後の文字を開始位置とし、</p>
<p>抽出してしまいます。</p>
<p>&nbsp;</p>
<p>開始位置に関しては、あらかじめ位置がわかっている場合は、</p>
<p>定数として宣言した各桁数を順番に足し合わせて最後に+1</p>
<p>をしてあげることで<span class="red-under">正確に抽出をすることができます</span>。</p>
<p>&nbsp;</p>
<p>ただし、これは入力値に含まれる各情報が固定値の場合に有効です。</p>
<p>抽出した値は各テキストボックスに表示をします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">Public Class TestMid
    Private Const PlaceCode As Integer = 3      ' 所在地コード
    Private Const TeleCode As Integer = 10      ' 電話番号コード
    Private Const NameCode As Integer = 5     ' 氏名コード

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' 入力値があれば
        If Me.TextBox1.Text &lt;&gt; "" Then
            Dim place As String = Mid(TextBox1.Text, 1, PlaceCode)
            Dim tele As String = Mid(TextBox1.Text, PlaceCode + 1, TeleCode)
            Dim name As String = Mid(TextBox1.Text, PlaceCode + TeleCode + 1, NameCode)

            ' テキストボックスへ出力
            Me.TextBox2.Text = place
            Me.TextBox3.Text = tele
            Me.TextBox4.Text = name
        End If
    End Sub
End Class</pre><p>
これでコードは完成です。</p>
<p>&nbsp;</p>
<h1>実行編</h1>
<p>先ほど作成したコードを実行していきます。</p>
<figure id="attachment_mmd_1451" class="wp-block-image aligncenter"><img decoding="async" width="796" height="480" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>入力値欄に、「777991234567866574」と入力し、ボタンを押します。</p>
<figure id="attachment_mmd_1452" class="wp-block-image aligncenter"><img decoding="async" width="799" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2020/12/Mid_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>ボタンを押すと、それぞれ入力値から抽出した情報を各テキストボックスに表示がされます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BM8PU+FA4JQQ+3L4M+77K4X" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www20.a8.net/svt/bgt?aid=200912034924&amp;wid=001&amp;eno=01&amp;mid=s00000016735001211000&amp;mc=1" alt="" width="728" height="90" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www14.a8.net/0.gif?a8mat=3BM8PU+FA4JQQ+3L4M+77K4X" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Mid関数について、使い方や抽出における考え方を例を交えて紹介していきました。</p>
<p>Mid関数はExcelでもサポートされているので、</p>
<p>&nbsp;</p>
<p>知っている読者の方も多かったのではないでしょうか。</p>
<p>知っているけどどうやって使っていいのかわからない、</p>
<p>そんな読者の方の参考になればと思っております。</p>
<p>&nbsp;</p>
<p>ぜひ、この記事をきっかけに使い方を学んでいただけたら嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/22 15:38時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1444"
					data-ulike-nonce="73efa64d91"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1444"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_43/">【VB.Net】Mid関数を使った文字列内の情報を抽出する方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1444</post-id>	</item>
	</channel>
</rss>
