プログラミング初級1
文字数カウント・プログラム(ステップ5)


ステップ4の MsgBox → Debug.Print(デバッグ行)


今回は、ちょっと息抜きです。(笑)
プログラム・ロジック的なものは、変わりません。 メッセージボックスを、デバッグ画面に変えるだけです。




ステップ5の仕様


  1. マイ ドキュメントのフォルダにあるテキストファイル mojisu.txt をオープンする。
  2. mojisu.txt の最後になるまで、以下の処理を繰り返す。
      (1) mojisu.txt を1行読み込む。
      (2) 文字数の計算(合計)をする。
      (3) 読み込んだ内容と文字数を、メッセージボックスで表示する。
  3. mojisu.txt の全文字数を、デバッグ画面に表示する。
  4. mojisu.txt を閉じる。



ステップ5のプログラム・ソース



  1. Sub Count5()
  2. '文字数カウント・プログラム
  3. '第5ステップ:第4ステップの MsgBox → Debug.Print(デバッグ行)
  4. Dim gyo As String '読み込んだ行を入れておく変数を宣言
  5. Dim moji_su As Long '1行の文字数用変数を宣言
  6. Dim gokei As Long 'ファイルの文字数用変数を宣言
  7. Dim gyo_no As Integer '行番号用変数を宣言
  8. gokei = 0 '合計用変数の初期化
  9. gyo_no = 0 '行番号用変数の初期化
  10. Open "C:\My Documents\mojisu.txt" For Input As #1 'ファイルのオープン
  11. Do Until EOF(1) 'ループ:条件EOF(1)になるまで、ここからの処理を繰り返す
  12. Line Input #1, gyo 'ファイルから1行読み込む
  13. moji_su = Len(gyo) '読み込んだ行の長さ(文字数)を '変数 moji_su へ入れる
  14. gokei = gokei + moji_su '合計用変数 gokei に文字数を加算する
  15. gyo_no = gyo_no + 1 '行番号を1アップ
  16. Debug.Print gyo_no & "行目は 「" & gyo & "」" '読み込んだ行の中身を表示する
  17. Debug.Print "文字数は " & moji_su '行の文字数を表示する
  18. Loop 'ループ:ここまでの処理を繰り返す
  19. MsgBox "ファイルの文字数は " & gokei '合計用変数 gokei の値を表示する
  20. Close #1 'ファイルのクローズ
  21. End Sub




解       説


ステップ4と、ほぼ同じですね。
違うのは、メッセージボックス(MsgBox) を、デバッグ画面表示(Debug.Print)にしているところだけです。

デバッグ画面って何? と疑問をお持ちの方がいらっしゃるでしょう。
まず、「バグ(bug)」というのは、プログラム上のミスのことです。 (bug って、虫という意味らしいのです。) で、「デバッグ(debug)」とは、虫をとること。(スパイ小説だと、盗聴器を取ること。)(^^;
つまり、プログラムのミスを修正することです。 そのために使用する画面を、「デバッグ画面」と言います。

では、「デバッグ画面」を出してみましょう。
VBA のサブルーチン Sub Count5 を作成してください。 そして、Ctrl + G を押してください。これは、Ctrl(コントロールキー)を 押したままで G のキーを軽く1回押すことです。 こんな画面
イメージ
が出て来たでしょうか?
この画面が、デバッグ画面です。 VB では「イミディエイト・ウィンドウ」と呼んでいます。 これからここをいっぱい使いますので、覚えておいてくださいね。
それでは、行ごとの説明ですが、今回はステップ4と違うところだけ説明します。

  1. 16行目と17行目(いきなり!)は、仕様の 2.の(3)「読み込んだ内容と文字数を、デバッグ画面に表示する。」にあたります。
    Debug.Print は、デバッグ画面(イミディエイト・ウィンドウ)に何かを表示させる命令です。 構文は、
    Debug.Print 表示させたいもの
    です。「表示させたいもの」は、変数でも良いですし、数式(2 + 3 とか)でも良いです。 変数や数式や文字列を混ぜたものでも良いです。
    例:Debug.Print moji & "は" & moji_su & "文字"

    プログラムの開発中には、コメントとか、こういうデバッグのための記述とかが必要になります。 デバッグのための記述を「デバッグ行」と呼んだりします。





ステップ5実行前の準備


ステップ2で使用したのと同じファイルを使います。 もしまだ準備していない方がいましたら、ステップ2を見て準備してください。 ファイルの中身は、こうなっています。
abcde
bcde
cde
de
e




実       行


    では動作(実行)確認してみましょう。

  1. カーソルの位置を確認してから、F5キーを押してください。


  2. ファイルの文字数が、メッセージボックスで表示されます。

    イメージ

    今回は、メッセージボックスは1つだけしか出てきません。 いちいちOKをクリックせずに済むので、このほうが動作確認が楽ですね。(笑) でも、実行途中が上手くいっているかどうか、見たい時があります。
    そんなときのための「デバッグ画面」!


  3. イミディエイト・ウィンドウを見てください。

    イメージ


    ステップ4では、メッセージボックスで表示されていたものが、一挙にデバッグ画面に表示されています。 いや〜、便利ですね。(え? そうでもない?)



入れ替え


今回は息抜きですので、入れ替えも1回だけ。
ソースの行の順番をでたらめにしたやつを、ここに書いておきます。 正しい順番に並べ替えてください。もちろん、正解を見ずにね。 それで正しいと思ったやつをコピーして、エラーが出ないかどうか試してみてください。




Line Input #1, gyo          'ファイルから1行読み込む
moji_su = Len(gyo)          '読み込んだ行の長さ(文字数)を
                            '変数 moji_su へ入れる
Dim gyo_no  As Integer      '行番号用変数を宣言
Loop                        'ループ:ここまでの処理を繰り返す
gyo_no = 0                  '行番号用変数の初期化
Sub Count5()
Open "C:\My Documents\mojisu.txt" For Input As #1   'ファイルのオープン
Dim gyo     As String       '読み込んだ行を入れておく変数を宣言
'             および文字数の合計を表示する。
gokei = gokei + moji_su     '合計用変数 gokei に文字数を加算する
Debug.Print "文字数は " & moji_su   '行の文字数を表示する
Dim moji_su As Long         '1行の文字数用変数を宣言
Do Until EOF(1)   'ループ:条件EOF(1)になるまで、ここからの処理を繰り返す
End Sub
gokei = 0                   '合計用変数の初期化
Close #1                    'ファイルのクローズ
MsgBox "ファイルの文字数は " & gokei    '合計用変数 gokei の値を表示する
Debug.Print gyo_no & "行目は 「" & gyo & "」"  '読み込んだ行の中身を表示する
Dim gokei   As Long         'ファイルの文字数用変数を宣言
'文字数カウント・プログラム
gyo_no = gyo_no + 1         '行番号を1アップ
'ステップ5:行数のわからないファイルをオープンし、全部の行とその文字数




戻る

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル