[ バックナンバー目次 ] [ 掲示板 ] [ VBA系メニュー ] [ 総合メニュー ]

三流君 VBAで楽しくプログラミング VBAメルマガ 登録と解除


昔、登録ページでした。今はメルマガ休刊中です。


サンプルです、読んで笑ってください

<プログラムって?流れって?>

こんにちは、
解説系は不得手な三流プログラマーKen3です。

プログラムって言うと、何を思い浮かべますか?
競馬のレーシングプログラム、、、運動会のプログラム、、、など、、、

運動会のプログラムなどは、順番に上から下に進んでいきます。(競馬の出走順も)
・開会式
・100メートル走
・玉入れ
・昼休憩      ←あれ、もう昼?
・リレー
・閉会式      ←もう、終わり、、、騎馬戦ないの?...気にしないで、、

開会式から閉会式まで、上から下に、流れていきます。

まぁ、通常は、そんな感じですが、
いつも同じことをするほど、(いつも同じじゃ、使えないでしょ)
プログラムは甘くなく、
変数の状態によってやること変えたり、(腹へったから、玉入れ中止、昼にする?)
繰り返したり、流れを組み合わせます。

ア.基本は、上から下に流れます。
  運動会のプログラムのように

イ.分岐する場合
  高校野球などのコールド試合(ルール知らないので、細かい点差、間違ってたら、、)
  通常は、1回から9回まで進みます。
  1回
  2回
   ・
   ・
  5回 ここで点差が10点以上ならコールドゲームで試合終了
   ・
   ・
  9回 得点の多いチームの勝ち 同点の場合は延長戦へ
  10回 どちらかが、多く得点を取るまで続く
   ・
   ・
    18回 引き分け再試合
  など、ある条件(ここでは、イニング回数と得点差ですね)
  で実行する作業(コールドなのか、、延長なのか、、再試合、、)
  を判断する。

ウ.繰り返し
  分岐と似ているのですが、繰り返し処理で(無限ループもある?)
  表現悪いですが、今風のたとえ話で、

  ストーカー君が好きな子に
  start
    ↓
  付き合ってください
    ↓
   イヤダ
    ↓
  ここで彼女は考える、そろそろ、警察につきだそうか、家族にそうだんするか
  (10回ぐらい付きまとわれた、、警察に相談-->ストーカー君end逮捕)
    ↓
  startへ戻るを繰り返す...
  (まったくストーカーってヤツは..頭の中の判断がおかしい、、、なんてね)

まぁ、冗談ですが、プログラムは、どんなものでも、
処理の流れ、分岐の繰り返し、組み合わせだと思います。

チョット前にやったInputBoxのテストプログラムも、
下記のような順序で基本は上から下へ流れてます。
Sub test()

    Dim strMOJI As String

    'ここで、文字を入れる、、
    strMOJI = InputBox("好きな人の名前を入れてください")

    '入力文字数のチェック
    If Len(strMOJI) = 0 Then
        MsgBox "ノリの悪いヤツだなぁ、面白くないなぁ"
        Exit Sub
    End If

    '結果表示
    If MsgBox(strMOJI & "さんに告白したの?", vbYesNo) = vbYes Then
        MsgBox "やりますねぇ"
    Else
        MsgBox "がんばってくださいね"
    End If

End Sub

・変数の定義(開会式?)Dim strMOJI As String
・好きな子の名前入力    strMOJI = InputBox("好きな人の名前を入れてください")
・入力文字数判断        If Len(strMOJI) = 0 Then
   0文字の時は警告出して関数を抜ける Exit Sub
・結果表示と確認        If MsgBox(strMOJI & "さんに告白したの?",〜
      vbYes ...  MsgBox "やりますねぇ"
      vbNo ....  MsgBox "がんばってくださいね"
・End Sub(閉会式?)

なんか、少し、ズレてる気がするけど、

拾い読みして、
1つでも何かの参考となれば幸いです。





<プログラムって?一直線プログラム>

こんにちは、
解説系は不得手な三流プログラマーKen3です。

プログラムには流れがある、、
なんて、偉そうに言いましたが、
基本は、上から下に流れるんですね。

Sub test()

    MsgBox "プログラムは、上から下に流れます"
    MsgBox "まんなか、、"
    MsgBox "今日も一日がんばりましょう"
    MsgBox "こんな感じです"

End Sub

少々うざいですが、こいつを実行するとメッセージが4つ表示されて行きます。

三流君さぁ、だから?なに?って感じなんだけど。
えっと、上から順番に命令を実行しているのがわかったと思います。

なんか、ツマンナイね。
そうですか?

Excelでマクロを記録ってあるの、ご存知ですか?
操作を記録して、VBAのコードを自動で作成してくれます。


たとえば、セルのB4に”横浜の金城は、カネシロじゃないよ”と入力し、 太字にすると、下記のように記録されます。
Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2001/2/26 ユーザー名 : K ' Range("B4").Select ActiveCell.FormulaR1C1 = "横浜の金城は、カネシロじゃないよ" Range("B4").Select Selection.Font.Bold = True End Sub なんか、いろいろ記録されていて、よくわかりませんが、操作を記録してくれます。 これも、上から下に決まった処理を行っています。 上から下に流れるだけでは、なんとなくプログラムと言えませんねぇ。 そんな固定処理は無いでしょう。 そうですねぇ、、 まぁ、はじめは一直線プログラムで、 メッセージが表示されて、おっ、なんて嬉しがってくれると。 次は、変数と計算です(予定) 今回は、物足りなかったかも?なんて思ってます。 拾い読みして、 1つでも何かの参考となれば幸いです。



<プログラムって?変数ってなんですかぁ?>

こんにちは、
解説系は不得手な三流プログラマーKen3です。

一直線プログラムはプログラムじゃない?
なんて声が聞こえてきそうですが、
分岐、ループの前に、今回は、
変数
を軽めに書こうと思います。

Sub test()

    MsgBox "プログラムは、上から下に流れます"
    MsgBox "まんなか、、"
    MsgBox "今日も一日がんばりましょう"
    MsgBox "こんな感じです"

End Sub

と前回は上から下へ固定の動きをするプログラムを書いてました。

変数って、言葉で説明すると説明しにくいんだけど
(それは、三流君が説明ベタってことだよねぇ(笑))

はじめは、
値を入れる、記憶するハコ(メモリ)に名前を付けて使う
って感じで覚えておいてもらえると、ありがたいです。

またまたぁ、どんな感じだっての?

Sub test2()

    Dim a As Integer

    a = 10

    MsgBox a

End Sub

まず、変数を使用するには、変数宣言をします。
宣言の方法は、

Dim a As Integer
dim 変数名 as 変数の型です。
aって名前のInteger型の変数をこれから使うよ(確保します)

a = 10
変数aに10を代入します。

MsgBox a
メッセージボックス関数で変数aを表示します。

質問、Integer型って何よ?初耳です私。
まぁ、a=10は代入ってのは、なんとなくわかるけど。。。さ。

変数の型ってのは、いっぱいあって主なのだけ書くけど、

整数型 (Integer)	2 バイト	-32,768 〜 32,767
長整数型 (Long)	4 バイト	-2,147,483,648 〜 2,147,483,647
単精度浮動小数点数型 (Single)	4 バイト
倍精度浮動小数点数型 (Double)	8 バイト

文字列型 (String) (可変長)	10 バイト + 文字列の長さ	0 〜 2GB

日付型 (Date)	8 バイト	西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日

オブジェクト型 (Object)	4 バイト	オブジェクトを参照するデータ型

なんてのがあります。

で?
でっと言われてもなぁ。
使用するものに合った型を選んでください。とそっけなく言ってみたり。

次のサンプルを見て下さい。
Sub test3()

    '変数の定義
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer

    '代入と計算
    a = 5
    b = 7
    c = a * b
    
    MsgBox c  '結果表示

End Sub

まぁ、余裕ですね?
a,b,cの名前を付けた変数を宣言して、
aに5をBに7を代入、
cには、a*bの計算結果が代入されます。
で、結果を表示。

三流君さぁ、オイラ、Excelで表作ったりしてるんだよ、
C3のセルに=a1*b1とかやってるし、
あまりなめたマネしないでくれる?
もしかして、*は×で/が÷ですなんて説明するつもり?だったとか?
ギク、、、+−*/はご存知でしたか。

そっか、Excelで計算式作ってるから、みなさん、式はOKかなぁ。
変数って言ってるけど、セルの番地みたいなもんと軽く覚えてもらえば、
いいのか。セルも値が入るハコだしねぇ。

Dim a1 As Integer の整数型でa1を宣言する
まぁ、イメージの問題なので、わかりやすいほうで。

だと、下記は理解に苦しむ式になるのでは?
Sub test4()

    '変数の定義
    Dim a As Integer

    '初期値の代入
    a = 1
    
    '計算式
    a = a + 1
    a = a + 1

    MsgBox a  '結果表示

End Sub

ポイントは、a = a + 1ですね。
数学だとありえない等式だ、、、なんて言わないで、
=記号は代入だと覚えてください。

先に右辺の計算 a+1を行い、結果をaに代入します。

この感覚を違和感無く使えるようにすぐなるんだけど。

結果は?(自分で試してみてください)

変数には、いろいろな型がある、
=は代入です。
いろいろ引っ張りまわしたけど、今回はこれだけでよかったのかも。

次回も変数の続きかなぁ、、それとも気分を変えて。
そろそろトバシテイカナイトと思いつつ。。。

拾い読みして、
1つでも何かの参考となれば幸いです。

--- 毎週木曜日はキャンペーンの日、ここでしか買えない商品も・・・ 株式会社セガ
作者に感想・質問/要望を送る(気軽に質問・感想書いてください)
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 掲示板 E-mail で受信したい

...

三流君のHP主な飛び先

VBAで楽しくプログラミング 最新情報 掲示板 バックナンバー メルマガ登録と解除
コンビニのオモテとウラ話 最新情報 掲示板 バックナンバー
ASPで遊ぶ、失敗する 最新情報 掲示板 バックナンバー メルマガ登録と解除
AB型三流PG 業務のグチ 最新情報 掲示板 バックナンバー
www.ken3.org(サイト内)から Google を利用して、

人気ページ/アクセスランキング
↑一週間の訪問者数と人気のページを表示してます


その他、宣伝ページです
・[ アンケート/ポイント]などで月500円を必死に稼いでます(笑)
・[ SOHO/在宅プログラマー/派遣]の話題、Webエントリー後の反応など
・[ ネットで小金を稼げるか?]実験中だが成果は無し
※あとは、[パソコン関係の書籍]や[ゲームソフト]、 [パソコンパーツ] をバナーから売ろうとするけど、
 なかなかうまくはいかないよね(笑)
...