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

<channel>
	<title>VBA関数 &#8211; とりっぷぼうる</title>
	<atom:link href="https://tripbowl.net/tag/vba%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://tripbowl.net</link>
	<description>観光地にはお得なフリーパスあり</description>
	<lastBuildDate>Tue, 01 Aug 2023 11:23:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>https://tripbowl.net/wp-content/uploads/2021/09/cropped-9363d75a338bc1796f4d8b21a4a8670f-32x32.jpg</url>
	<title>VBA関数 &#8211; とりっぷぼうる</title>
	<link>https://tripbowl.net</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法</title>
		<link>https://tripbowl.net/vba-label-vlookup/</link>
		
		<dc:creator><![CDATA[とりっぷぼうる]]></dc:creator>
		<pubDate>Wed, 11 Jul 2018 17:03:53 +0000</pubDate>
				<category><![CDATA[データの操作]]></category>
		<category><![CDATA[ラベル]]></category>
		<category><![CDATA[VBA関数]]></category>
		<category><![CDATA[ユーザーフォーム]]></category>
		<guid isPermaLink="false">https://tripbowl.net/?p=143</guid>

					<description><![CDATA[<p><img src="https://tripbowl.net/wp-content/uploads/2018/07/75a2d6269bd40f028784554bed538a69.jpg" class="webfeedsFeaturedVisual" /></p>ラベル（Label）にVBAコードを記述する ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル（Label）」にも、実はVBAコードを記述してプログラムを実行することができます。 VB [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://tripbowl.net/wp-content/uploads/2018/07/75a2d6269bd40f028784554bed538a69.jpg" class="webfeedsFeaturedVisual" /></p><h2>ラベル（Label）にVBAコードを記述する</h2>
<p>ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル（Label）」にも、実はVBAコードを記述してプログラムを実行することができます。</p>
<p>VBAコードを実行するのはコマンドボタン（CommandButton）だけではないのです。</p>
<p>一般的に「表の中から特定の指定したセルの値に応じて目的のデータを検索する」場合、VLOOKUP関数がとても有名ですね。</p>
<p>このVLOOKUP関数はそのままエクセルVBAで使うことはできません。</p>
<p>その為にVBAではFindメソッドを使ってVLOOKUP関数と同じことができるようになります。</p>
<p>そこで「<a href="https://tripbowl.net/manual-member-ltb/">ボウリング成績表選手登録方法～LTB個人リーグ編</a>」では、ユーザーフォームに配置した参加選手名を表示している「ラベル（Label）」に、直接VBAコードを記述して<span class="marker-blue">【修正登録】</span>ボタン（コマンドボタン）を押すと検索したいデータ（名前）を選択して、表に記載されている会員番号・名前・AVE・性別を変更修正できるようにしています。</p>
<p>下の図の説明に関しては下記ページに記載していますので、ここでは省略します。</p>
<p>https://tripbowl.net/manual-member-ltb/</p>
<p><img decoding="async" class="aligncenter wp-image-35 size-full" src="https://tripbowl.net/wp-content/uploads/2018/07/2e81fea7b000427decbb4d99267292ab.jpg" alt="LTB選手登録" width="700" height="643" srcset="https://tripbowl.net/wp-content/uploads/2018/07/2e81fea7b000427decbb4d99267292ab.jpg 700w, https://tripbowl.net/wp-content/uploads/2018/07/2e81fea7b000427decbb4d99267292ab-300x276.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<div class="success-box">ラベルに選手番号とFindメソッドで見つけて、修正登録で書き換える</div>
<p>VBAコードが反映されるワークシートです</p>
<p><img decoding="async" class="aligncenter size-full wp-image-146" src="https://tripbowl.net/wp-content/uploads/2018/07/0bd6ff940b1baa834519b6f8ddc6fdca.jpg" alt="" width="542" height="420" srcset="https://tripbowl.net/wp-content/uploads/2018/07/0bd6ff940b1baa834519b6f8ddc6fdca.jpg 542w, https://tripbowl.net/wp-content/uploads/2018/07/0bd6ff940b1baa834519b6f8ddc6fdca-300x232.jpg 300w" sizes="(max-width: 542px) 100vw, 542px" /><br />
画像スペースの都合で、１６行目まで（AA16まで）切り取って貼り付けています。実際は４２行目まであります。（AA42）</p>
<div class="comment-box">では、実際にはラベル（Label44）にはこのようなコードを記述しています</div>
<div class="blank-box bb-tab bb-point bb-blue success-box">Private Sub Label44_Click()<br />
Application.ScreenUpdating = False<br />
<span class="marker-under-red">Range(&#8220;AA1&#8221;).Value = &#8220;1&#8221;</span><br />
msg = MsgBox(&#8220;選手1を修正しますか？&#8221;, Buttons:=vbYesNo + vbQuestion)<br />
If msg = vbYes Then<br />
<span class="marker-under-red">Dim mycell As Range</span><br />
<span class="marker-under-red">Set mycell = Range(&#8220;AA3:AA42&#8221;).Find(What:=Range(&#8220;AA1&#8221;).Value, LookAt:=xlWhole)</span><br />
<span class="marker-under-red">If Not mycell Is Nothing Then</span><br />
<span class="marker-under-red">mycell.Select</span><br />
<span class="marker-under-red">UserForm1.TextBox1.Value = mycell.Offset(0, 1).Value</span><br />
<span class="marker-under-red">UserForm1.TextBox2.Value = mycell.Offset(0, 2).Value</span><br />
<span class="marker-under-red">UserForm1.TextBox3.Value = mycell.Offset(0, 4).Value</span><br />
<span class="marker-under-red">Else</span><br />
<span class="marker-under-red">End If</span><br />
End If<br />
Application.ScreenUpdating = True<br />
End Sub</div>
<p>実際に記述しているVBAコードをそのまま書いているので、VLOOKUP関数をVBAのFindメソッド以外のコードもありますが、<span class="marker-under-red">赤い下線</span>の部分が表の中から探す部分です。</p>
<p>一応記述したVBAコードを順番に説明します。</p>
<div class="blank-box bb-yellow">
<ol>
<li>「ラベル44をクリックしたら実行する」というマクロの記述を開始</li>
<li>画面のちらつき（無駄な移動）を停止する</li>
<li><span class="marker-under-red">検索値として選手１なので「1」をセル「AA1」に転記する</span></li>
<li>メッセージで「選手１を修正しますか？」と表示し、「はい」「いいえ」を選択させる</li>
<li>「はい」を選択したら下記を実行する</li>
<li><span class="marker-under-red">選手番号が変わるので、変数として「mycell」を宣言する</span></li>
<li><span class="marker-under-red">セルAA3からAA42の範囲でセルAA1と同じ値（選手番号）があるセルを検索して、見つけたセルを変数mycellに格納する</span></li>
<li><span class="marker-under-red">変数mycellの値（選手番号）が見つからない（Nothingでない場合）、要するに見つけた場合はIfステートメントの開始（もし見つけたらということになる）</span></li>
<li><span class="marker-under-red">見つけたセル「mycell」を選択する（ここ例では表の中の選手番号１はセルAA3にある）</span></li>
<li><span class="marker-under-red">ユーザーフォーム１のテキストボックス１に「mycell」の同じ行で右１列目（右隣）のセルの値を転記する（会員番号）</span></li>
<li><span class="marker-under-red">ユーザーフォーム１のテキストボックス２に「mycell」の同じ行で右２列目のセルの値を転記する（名前）</span></li>
<li><span class="marker-under-red">ユーザーフォーム１のテキストボックス３に「mycell」の同じ行で右４列目のセルの値を転記する（AVE）</span></li>
<li><span class="marker-under-red">そうでない場合（「はい」ではなく「いいえ」を選択した場合）</span></li>
<li><span class="marker-under-red">Ifステートメントの終了（見つける作業をしない）</span></li>
<li>Ifステートメントの終了（メッセージ終了）</li>
<li>画面のちらつき停止を解除する</li>
<li>マクロの記録終了</li>
</ol>
</div>
<p>これで、名前（Label）をクリックするとその選手を表の中から探して、見つけたら「会員番号」「名前」「AVE」を見つけてユーザーフォームに表示するようになります。</p>
<p><img decoding="async" class="aligncenter size-full wp-image-150" src="https://tripbowl.net/wp-content/uploads/2018/07/9c15d9775fe9d3882f1fe25024a60bcf.jpg" alt="" width="699" height="364" srcset="https://tripbowl.net/wp-content/uploads/2018/07/9c15d9775fe9d3882f1fe25024a60bcf.jpg 699w, https://tripbowl.net/wp-content/uploads/2018/07/9c15d9775fe9d3882f1fe25024a60bcf-300x156.jpg 300w" sizes="(max-width: 699px) 100vw, 699px" /></p>
<div class="comment-box">ちょっと大変ですが</div>
<p>この作業を繰り返し選手分（40名）をラベル番号を変えながらコードを書いていけば、出来上がります。</p>
<p>これで修正したい表のデータが取り出せたので、次は書き換えです。</p>
<h2>修正登録ボタンで表のデータを書き換える</h2>
<p>それでは、この表示されたデータの書き換えを【修正登録】ボタン（コマンドボタン）でできるようにしましょう。</p>
<div class="comment-box">では、実際にはコマンドボタン（CommandButton2）にはこのようなコードが書いてあります。</div>
<div class="blank-box bb-tab bb-point bb-blue success-box">Private Sub CommandButton2_Click()<br />
If UserForm1.TextBox1.Value = &#8220;&#8221; Or UserForm1.TextBox2.Value = &#8220;&#8221; Or UserForm1.TextBox3.Value = &#8220;&#8221; Then<br />
MsgBox &#8220;修正データが自動転記されていません&#8221;<br />
End If<br />
msg = MsgBox(&#8220;修正実行しますか？&#8221;, Buttons:=vbYesNo + vbExclamation)<br />
If msg = vbYes Then<br />
ActiveCell.Offset(0, 1).Value = UserForm1.TextBox1.Value<br />
ActiveCell.Offset(0, 2).Value = UserForm1.TextBox2.Value<br />
ActiveCell.Offset(0, 4).Value = UserForm1.TextBox3.Value<br />
If OptionButton1.Value = True Then<br />
ActiveCell.Offset(0, 3).Value = &#8220;1&#8221;<br />
ElseIf OptionButton2.Value = True Then<br />
ActiveCell.Offset(0, 3).Value = &#8220;2&#8221;<br />
End If<br />
For i = 44 To 83<br />
With UserForm1.Controls(&#8220;Label&#8221; &amp; i)<br />
.Caption = Cells(i &#8211; 41, 29)<br />
End With<br />
Next i<br />
For j = 84 To 123<br />
With UserForm1.Controls(&#8220;Label&#8221; &amp; j)<br />
.Caption = Cells(j &#8211; 81, 31)<br />
End With<br />
Next j<br />
End If<br />
End Sub</div>
<div class="blank-box bb-yellow">
<ol>
<li>「コマンドボタン２をクリックしたら実行する」というマクロの記述を開始</li>
<li>もしユーザーフォーム１のテキストボックス１または、ユーザーフォーム１のテキストボックス２または、ユーザーフォーム１のテキストボックス３が空欄だったら</li>
<li>メッセージで「修正データが自動転記されていません」と表示する</li>
<li>空欄の時のIfステートメント終了</li>
<li>各テキストボックスが入力されていたら、メッセージで「修正実行しますか？」を「はい」「いいえ」で選択させる</li>
<li>「はい」を選択したら</li>
<li>選択されているセル（ラベルを押した時に選手番号を検索した時にすでに選択しています）の同じ行の右に1列隣のセルに（会員番号）ユーザーフォーム１のテキストボックス１に入力されている値（書き換えた会員番号）を転記する（上書きして書き換える）</li>
<li>選択されているセル（ラベルを押した時に選手番号を検索した時にすでに選択しています）の同じ行の右に2列隣のセルに（選手名）ユーザーフォーム１のテキストボックス２に入力されている値（書き換えた選手名）を転記する（上書きして書き換える）</li>
<li>選択されているセル（ラベルを押した時に選手番号を検索した時にすでに選択しています）の同じ行の右に4列隣のセルに（会員番号）ユーザーフォーム１のテキストボックス３に入力されている値（書き換えたAVE）を転記する（上書きして書き換える）</li>
<li>もし（性別選択）オプションボタン１が選択されている場合</li>
<li>選択されているセル（ラベルを押した時に選手番号を検索した時にすでに選択しています）の同じ行の右に3列隣のセルに（性別）半角数字「1」を転記する（上書きして書き換える）</li>
<li>そうではなく、オプションボタン２が選択されている場合</li>
<li>選択されているセル（ラベルを押した時に選手番号を検索した時にすでに選択しています）の同じ行の右に3列隣のセルに（性別）半角数字「2」を転記する（上書きして書き換える）</li>
<li>オプションボタンに関するIfステートメント終了</li>
</ol>
</div>
<p>15行目以下は、書き換えた内容が反映されているか確認できるために、再度各ラベルを再表示させる為のコードです。</p>
<p>これは、「<a href="https://tripbowl.net/vba-label-change/">複数のラベル名を一括で複数のセルの値に書き換える</a>」ページで書いてあることと一緒になるので、ここでは省略します。</p>
<p>https://tripbowl.net/vba-label-change/</p>
<p>これで、簡単に言うと、データ修正ができます。</p>
<p>この方法を使いこなせるようになると、会員住所録などでも使えるようになるので、とても重宝しますよ。</p>
<p>[temp id=19]</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
