<?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>Yukun&#039;s Blog &#187; Excel VBA</title>
	<atom:link href="http://www.yukun.info/blog/category/excel-vba/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yukun.info</link>
	<description>難しいことは分かりやすく、簡単なことは面白く紹介</description>
	<lastBuildDate>Wed, 25 Aug 2010 15:38:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Excel VBA: 指定した行、列内のテーブルのセルに乱数を格納</title>
		<link>http://www.yukun.info/blog/2009/06/excel-vba-random-rnd-cells.html</link>
		<comments>http://www.yukun.info/blog/2009/06/excel-vba-random-rnd-cells.html#comments</comments>
		<pubDate>Mon, 08 Jun 2009 11:00:43 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[Excel VBA]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1438</guid>
		<description><![CDATA[				
				今回のネタは乱数でサンプルデータを生成したいときなどに使えますかね。
				ソースコード
				
Sub randloop()
    Randomize &#039; シードの設定（引数省略でシス [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://www.yukun.info/wp-content/uploads/excel_vba_random_cells.png"><img src="http://www.yukun.info/wp-content/uploads/excel_vba_random_cells.png" alt="excel_vba_random_cells" title="excel_vba_random_cells" width="435" height="254" class="alignleft size-full wp-image-1495" /></a></p>
				<p>今回のネタは乱数でサンプルデータを生成したいときなどに使えますかね。</p>
				<h2>ソースコード</h2>
				<pre class="brush: vb">
Sub randloop()
    Randomize &#039; シードの設定（引数省略でシステムタイマーの値）
    Const GYO_S As Integer = 1 &#039; 開始行
    Const RETSU_S As Integer = 1 &#039; 開始列
    Const GYO_E As Integer = 10 &#039; 終了行
    Const RETSU_E As Integer = 5 &#039; 終了列
    Const UPPER As Integer = 100 &#039; 乱数の最大値
    Const LOWER As Integer = 0 &#039; 乱数の最小値

    &#039; 指定された行、列のテーブル内のセルに乱数を格納
    For i = GYO_S To GYO_E
        For j = RETSU_S To RETSU_E
            &#039; Rndは[0, 1)の範囲の値を返す
            Cells(i, j).Value = Int((UPPER - LOWER + 1) * Rnd + LOWER)
        Next j
    Next i
End Sub
</pre>
				<p>実行結果は上図のように0～100の範囲の乱数（今回は整数）が格納されます。<br />
				上記のコードの要の式は</p>
				<pre>(upper - lower + 1) * Rnd + lower</pre>
<p>です。簡単に意味を説明しますと括弧内の+1はRndの戻り値の範囲が1未満の為の補正で、式の最後の+lowerはRndの戻りが0の場合の補正、と捉えます。</p>
<h3>参考サイト</h3>
<ul>
<li><a href="http://www.vba-world.com/rnd_1.html" title="VBA World ： 乱数の発生(関数：Rnd) その１" target="_blank">VBA World ： 乱数の発生(関数：Rnd) その１</a></li>
</ul>
<h4>関連記事</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2009/03/excel-vba-hello-world.html" rel="bookmark" title="2009年3月20日">Excel VBA: Hello Worldと変数、配列の宣言</a></li>
<li><a href="http://www.yukun.info/blog/2008/01/cpp-random.html" rel="bookmark" title="2008年1月1日">C++でMIN以上MAX未満の乱数を生成</a></li>
<li><a href="http://www.yukun.info/blog/2008/09/r-draw-histogram.html" rel="bookmark" title="2008年9月9日">Rで統計: ヒストグラムの描画 - hist()関数</a></li>
<li><a href="http://www.yukun.info/blog/2008/06/python-random.html" rel="bookmark" title="2008年6月10日">Python: 乱数の生成 - random()、randint()、uniform()、seed()メソッド</a></li>
<li><a href="http://www.yukun.info/blog/2008/06/python-random2.html" rel="bookmark" title="2008年6月11日">Python: モジュールにテスト関数を定義 - 重複のない乱数(整数MIN以上MAX以下)の生成</a></li>
</ul>
<p><!-- Similar Posts took 16.179 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2009/06/excel-vba-random-rnd-cells.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel VBA: Hello Worldと変数、配列の宣言</title>
		<link>http://www.yukun.info/blog/2009/03/excel-vba-hello-world.html</link>
		<comments>http://www.yukun.info/blog/2009/03/excel-vba-hello-world.html#comments</comments>
		<pubDate>Fri, 20 Mar 2009 09:30:00 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[Excel VBA]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1403</guid>
		<description><![CDATA[				ポツポツ使う場面が増えてきたので、備忘録代わりにまとめていこうかな（気が向いたときに）。
				VBAでHello World
				メニューバーからツール→マクロ→Visual Basic Editor(A [...]]]></description>
			<content:encoded><![CDATA[				<p>ポツポツ使う場面が増えてきたので、備忘録代わりにまとめていこうかな（気が向いたときに）。</p>
				<h2>VBAでHello World</h2>
				<p>メニューバーからツール→マクロ→Visual Basic Editor(Alt+F11)をクリックするとエディタが起動します。最初は何もファイルが開かれていないと思うので、まず、メニューバーから挿入→標準モジュールをクリックして新規作成し、試しに以下のコードを打ち込んで実行してみます。</p>
				<pre class="brush: vb">
Sub helloWorld()
    MsgBox &quot;Hello, VBA&quot;
End Sub
</pre>
				<p>入力し終わったらメニューの実行→Sub/ユーザー フォームの実行(F5)をクリックするとスクリプトが実行されます。結果は下図のようになります。<br />
				<a href="http://www.yukun.info/wp-content/uploads/vba_hello_world.png"><img src="http://www.yukun.info/wp-content/uploads/vba_hello_world.png" alt="vba_hello_world" title="vba_hello_world" width="154" height="177" class="alignleft size-full wp-image-1509" /></a><br />
				ダイアログボックス内に文字列が表示されていますね。仮に下記のようにした場合は、</p>
				<pre class="brush: vb">
Sub helloWorld()
    MsgBox &quot;Hello, VBA&quot;
    MsgBox &quot;Hello, Excel&quot;
End Sub
</pre>
				<p>一つ目の"Hello, VBA"のダイアログのOKを押した後、"Hello, Excel"のダイアログが表示されます。どうやらMsgBox関数はブロック関数みたい。</p>
				<h2>変数の宣言 - Dim</h2>
				<pre class="brush: vb">
Sub varTest()
    Dim num1 As Integer
    Dim str1 As String
    Dim num2 As Integer, str2 As String

    num1 = 10
    str1 = &quot;文字列1&quot;

    MsgBox num1 &amp; &quot; &quot; &amp; str1
    MsgBox num2 &amp; &quot; &quot; &amp; str2, vbInformation, &quot;デバッグプリント&quot;
End Sub
</pre>
				<p>実行結果は<br />
				<a href="http://www.yukun.info/wp-content/uploads/vba_var01.png"><img src="http://www.yukun.info/wp-content/uploads/vba_var01.png" alt="vba_var01" title="vba_var01" width="154" height="177" class="alignleft size-full wp-image-1511" /></a><br />
				<a href="http://www.yukun.info/wp-content/uploads/vba_var02.png"><img src="http://www.yukun.info/wp-content/uploads/vba_var02.png" alt="vba_var02" title="vba_var02" width="154" height="190" class="alignleft size-full wp-image-1512" /></a></p>
				<p>変数宣言の一般式は</p>
				<blockquote><p>Dim ＜変数名＞ As ＜型＞</p></blockquote>
				<p>のようにDim～Asステートメントを用います。</p>
				<p>また、MsgBox関数のvbinformationを指定することで情報メッセージアイコンを表示します。ちなみに、出力する複数の文字列の連結は「<strong>&#038;</strong>」を用います。</p>
				<h2>定数の宣言 - Const</h2>
				<blockquote><p>Const ＜定数名＞ As ＜型＞ = ＜値＞</p></blockquote>
				<p>変数宣言と似てますね。異なるところは、DimがConstに変わり、宣言と値の初期化を同時に行うことですかね。変数も値の初期化は可能ですが、それは任意です。</p>
				<h2>オブジェクトの参照を変数に格納 - Set</h2>
				<p>オブジェクトの参照を代入する際にはSetステートメントを使用します。以下のコードは1つ目のワークシート名を表示しています。</p>
				<pre class="brush: vb">
Sub objectTest()
    Dim tmpSheet As Worksheet
    Set tmpSheet = Worksheets(1)
    MsgBox tmpSheet.Name, vbInformation
End Sub
</pre>
				<p>実行結果は<br />
				<a href="http://www.yukun.info/wp-content/uploads/vba_var_set01.png"><img src="http://www.yukun.info/wp-content/uploads/vba_var_set01.png" alt="vba_var_set01" title="vba_var_set01" width="160" height="190" class="alignleft size-full wp-image-1513" /></a><br />
				一般式は</p>
				<blockquote><p>Set ＜オブジェクト型変数＞ = ＜オブジェクト＞</p></blockquote>
				<h3>コンパイルエラー、「SubまたはFunctionが定義されていません」の原因</h3>
				<p>大抵ミスタイプです。Worksheet<strong>s</strong>(1)と打つところをWorksheet(1)としてしまうとか。変数宣言のミスでもデフォルトでは「SubまたはFunctionが～」と出力されるので注意。</p>
				<h2>配列の宣言</h2>
				<blockquote><p>Dim ＜配列名＞(＜要素数＞) As ＜型＞</p></blockquote>
				<pre class="brush: vb">
Sub objectTest()
    Dim arr(3) As Integer
    arr(0) = 99
    MsgBox arr(0)
End Sub
</pre>
				<p>ダイアログには99が表示されます。配列の添え字は0から数えますが、下記の文をモジュールの宣言セクションに書くことで1から数えられます。</p>
				<blockquote><p>Option Base 1</p></blockquote>
				<pre class="brush: vb">
Option Base 1

Sub objectTest()
    Dim arr(3) As Integer
    arr(1) = 99
    MsgBox arr(1)
End Sub
</pre>
				<p>実行結果は同じく99です。</p>
				<h4>関連記事</h4>
				<ul class="similar-posts">
				<li><a href="http://www.yukun.info/blog/2009/06/excel-vba-random-rnd-cells.html" rel="bookmark" title="2009年6月8日">Excel VBA: 指定した行、列内のテーブルのセルに乱数を格納</a></li>
				<li><a href="http://www.yukun.info/blog/2008/06/python-list2.html" rel="bookmark" title="2008年6月12日">Python: リストの要素の追加と削除、取出し - append()、extend()、pop()、remove()メソッド</a></li>
				<li><a href="http://www.yukun.info/blog/2008/11/mindmap-mankiw-principles-of-economics-1-ten-principles-of-economics.html" rel="bookmark" title="2008年11月24日">Mind Map: マンキュー入門経済学 - 第1章 経済学の十大原理</a></li>
				<li><a href="http://www.yukun.info/blog/2008/01/ruby-block.html" rel="bookmark" title="2008年1月9日">Ruby: メソッドの引数にブロックを渡す</a></li>
				<li><a href="http://www.yukun.info/blog/2008/06/python-random2.html" rel="bookmark" title="2008年6月11日">Python: モジュールにテスト関数を定義 - 重複のない乱数(整数MIN以上MAX以下)の生成</a></li>
				</ul>
				<p><!-- Similar Posts took 10.465 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2009/03/excel-vba-hello-world.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
