アクセス数:
プログラムを動かすために
|
健康情報 ⇒ どこへ向かって・・・ ⇒ VBAトップ ⇒ プログラムを動かすために 難しいプログラム、簡単なプログラム、 どれも基本となるのは3つの動作です。 @実行順序 A条件分岐 B繰り返し処理(ループ) プログラムとは、現実をシミュレートするもの。 現実といっても、ひとつひとつを細かく分解すると、結構単純なものです。 この三つのやり方さえ知っていれば、大概のことはできます。 @実行順序 どこから始まるか、どうやって処理が流れていくか、を、思ったとおりに制御する必要があります。 まず、何をキッカケにプログラムが始まるのか? ですが、通常のプログラムですと実行ファイル(.exe)を動かした時に始まりますが、Excel VBAでは、既にエクセルが動いているので、他にプログラムが動き出すキッカケを作ってやらないといけません。 VBAでは、様々なイベントをキッカケとしてプログラムが走り出すようになっています(イベントドリブン型と言います)。 ファイルを開いたとき、ボタンを押したときなど、又は、プログラムから明示的に他のプログラムを呼び出す場合もあります。 開始のためのプログラム(例) ●Microsoft Excelのファイルを開いた時に始まるプログラム
プロジェクトエクスプローラ(↑)で「ThisWorkbook」をダブルクリックすると、ワークブック全体に関するプログラムを書くことができるファイルが開きます。 このファイルで、「Workbookオブジェクト」の「Openイベント」を選択したところです。
と自動的に出てくるので、「Private Sub Workbook_Open()」と「End Sub」の間にプログラムを書いて保存すると、このファイルを開いた時にそのプログラムは実行されます。 ●シートをダブルクリックした時に始まるプログラム
プロジェクトエクスプローラ(↑)で「Sheet1(Sheet1)」をダブルクリックすると、ワークシート(Sheet1)に関するプログラムを書くことができるファイルが開きます。 このファイルで、「Worksheetオブジェクト」の「BeforeDoubleClickイベント」を選択したところです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean) ここにプログラムを記述すると、Sheet1をダブルクリックすると実行されます。 ●ボタンを押したときに始まるプログラム ↑ワークシートに貼り付ける場合と、ユーザーフォームに貼り付ける場合 デザインモード(三角定規ON)で、コマンドボタンをダブルクリックするとVBAの画面が開きます。 ●コードの途中にタグを入れる タグ名: Goto タグ名 Goto で強制的にタグ(xxx:)にジャンプさせます。
これが入ると、読みにくく、改修しにくいダメなコードと言われる場合が多いですが、確実にその場限り、といった場合や、それ以上の機能を期待しない場合などには良いのかも。 ※個人的には、私の書いたコードを他の誰かが見たり直したりということはなかったので、セオリー無視のスピード重視、当然ですが、昔のコードは意味不明です(完全にプログラムから離れていたからと思いたい) A条件分岐 もしこうだったら、あの時ああしていれば・・・ 後になってくよくよしても仕方がありません。 前もって準備しておきましょう! 何いってんだか 条件分岐の王様は「If」 他にも、 IIf Select Case Switch Do Loop の中でのWhile 又は Until これらを組み合わせると更に強力になります。 まずは「If」から 使い方としては、以下のようになります。 If i = 1 Then i = 1 が条件式。 i = 1 が真(True)なら直下の命令を実行し、ElseIf やElseで指定されたプログラムは実行されません。 ElseIfはIf命令が偽(False)であった場合、別の条件式を判定します。 Trueであれば良いので、戻り値がBool型の関数などを使ってもいいです。(If CHECK_TRUE Then〜) A = False や Not A としますと、条件が逆転します。 ※True=False ⇒ False , False=False ⇒ True Elseは、全ての条件が偽(False)だった場合に実行されます。 If文の中にIf文を入れて、入れ子(ネスト)状態にすることにより、より複雑な条件分岐を実現することもできます。 If (i = 1 or i = 3) And j = 1 Then というように、複合的な条件を指定することもできます。 複合的な条件では>> If a = 1 And b = 1 Then 〜 ●a=1ではなかったらその時点でb=1かどうかまでは判定されません。ですから例えば、If a = 1 And fncCheck Then 〜 というように、関数fncCheckを後方に配置した場合、fncCheckは実行されるかどうか分からないので、必ず実行したい場合には別の方法による必要があります。 IIf ifの真偽に分岐する一行版 j = IIf(i = 1, 2, 3) で、Excelシート関数の=IF([式],[真],[偽]) と使い方は同じです。 Select Case Dim i As Integer このように、様々な分岐ができますが、実際に実行してみると、Case i < 5 が実行されていないので、上から順番に判定して、合致した時点でSelect文を抜けます。 C言語では確かbreak;と書いて抜けないと次の条件も判定されたような気がしますが、VBAでは基本的に一つの条件に合致したら他の条件式は判定しません。 Switch j = Switch(i = 1, 2, i = 2, 3, i = 3 = 4) i = 1 なら j = 2 , i = 2 なら j = 3 ・・・・ Switch関数の引数を左から評価していって、最初に合致した物が j に格納されます。 Do Loop の中でのWhile 又は Until ↓で解説 Bループ For Next For Each Next Do Loop For Next For i = 1 to 10 ・・・ Next i の値が1〜10まで変化しながらループします。 For i = 1 to 10 Step 2 For i = 10 to 1 Step -1 Stepを使うことにより、変化の仕方を設定できます。省略したら+1です。 For i = 0 to UBound([配列]) 上のように配列の上限までループさせる場合など、その都度値を変更させる場合にも適用できます。 Exit For を途中で入れるとループを強制的に抜けます。 For Each Next For Each [Object型変数] In [Object] ・・・ Next オブジェクトの内容の一つがオブジェクト型変数の中に格納された状態でループします。 Objectの型が分からなければ、Variant型変数を使うと確実 Do Loop Do ・・・ Loop とにかくループさせます。 ループを抜ける方法 ・途中にExit Doを入れる ・Do While[Until] 条件式 ⇒ループが始まる前に条件判定 ・Loop While[Until] 条件式 ⇒ループが終わってから条件判定 Do While [Trueになる式] ⇒ OK Do Untile [Falseになる式] ⇒ OK (例) Do While i = 0 j = InputBox("j=") if j = 1 then i = 1 Loop 条件が偽(False)で処理を抜けます。 |
本物商品、健康情報の「ほんもの冒険スタジオ」
カリカパパイヤ発酵食品、ペット用品の「パパナピ!」 インフォメーション
営業日
月〜土曜日(10:00am〜5:00pm) 日祝定休日
ご注文・お問い合わせについて
・ 当サイトにて随時(24時間)受付しております。 ※日曜、祝日のご注文分につきましては翌営業日発送となります。
〜当サイトからのご注文〜 ※ 取り扱い商品一覧画面の画像をクリックすることにより各商品の詳しい説明画面に移ります。
〜配達日及び配達時間帯のご指定〜 ・お届けの日及びお届け時間帯につきましては、ご都合の良い日時をお選びいただけます。 [午前中] [14〜16時] [16〜18時] [18〜20時] [19〜21時]
「ほんもの冒険スタジオ」運営
配送料、代金引換手数料について
〜配送料〜 ・1回のお買い上げ金額が5,000円(税込み)以上の場合には、配送料は日本全国無料とさせていただきます。 ・1回のお買い上げ金額が5,000円(税込み)に満たない場合には、配送料650円(税込み)をご負担願います。(一部例外もございます。)
〜代金引換手数料〜 ・代金引換手数料につきましては、全額当方で負担させていただきます。
お支払い方法
〜代金引換のお客様〜 ・現金、クレジットカード、デビットカードのいずれかでのお支払いとなります。
〜クレジットカード決済サービス〜 <直接決済は終了しました>
・お客様登録画面(ご希望商品選択後)にて簡単決済
〜銀行振込のお客様〜 ・お振込確認後直ちに発送いたします。(お振込手数料はご負担願います) お振込先:PayPay銀行 (0033) ビジネス営業部 (005) (普通) 1 5 1 8 4 1 7 ヤマモトケンコウドウヤマモトマサハル
|