第3講 For文を学ぼう

第2話 はじめてのFor文演習
前話問題解答例
Private Sub CommandButton1_Click()
  
  Dim a As Integer,
i As Integer
  
  a = 0
  
  For i = 5 To 10
    a = a + Cells(i, 3)
  Next
  
  Cells(11, 3) = a
    
End Sub

Private Sub CommandButton2_Click()

  Range("C11").Select
  Selection.ClearContents
  Cells(1, 1).Select
  
End Sub
参考ダウンロード添付ファイル

実行画面
実行を押すと、
23
消去を押すと、
9

解説
前話で説明しませんでしたが、
  For i = 5 To 10
    a = a + Cells(i, 3)
  Next
のiも変数の1つなのです。
For文を制御(コントロール)する変数なので、
iを制御変数と言います。
ただ、前話で説明しませんのでしたので、
Private Sub CommandButton1_Click()
  
  Dim a As Integer
  
  a = 0
  
  For i = 5 To 10
    a = a + Cells(i, 3)
  Next
  
  Cells(11, 3) = a
    
End Sub
とされた方の方が多かったと思います。
さらに、いいますと、
Private Sub CommandButton1_Click()
  
  a = 0
  
  For i = 5 To 10
    a = a + Cells(i, 3)
  Next
  
  Cells(11, 3) = a
    
End Sub
でも問題なく動きます。
変数なのに、何故宣言しないのに使えたのでしょうか。
実は、VBAの場合宣言を省略することが出来るのです。
宣言を省略すると、
VBAは自動的にバリアント型という万能型のデータ型の変数として扱います。
ただし、万能型であるために必要メモリが大きく、
処理速度に影響を与えますから、
型は宣言する習慣を身につけて下さい。
制御変数は、整数ですからIntegerとして宣言して下さい。
ただし、
128未満の整数の場合にはIntegerの半分のメモリで済むByte型で宣言する手もあります。
私が開発した数独自動生成ソフトは、制御変数はすべてByte型で宣言しています。
制御変数を高次元(100次元を越える)で使っていますので、
Integer型で宣言するより、何倍も処理速度は速くなっています。
また、制御変数が大きな整数を扱う場合にはLong型と宣言する場合もあります。
サイトによっては、32ビット型パソコンが主流になっている今、
変数の宣言をせず、すべてバリアント型にしても処理速度は影響を受けないとしている
サイトもありますが、実際には実験してみると数倍の処理速度の差が生じます。
基本他の言語(C言語やJavaなど)では、変数の宣言をしないとエラーすることも考えると、
変数は必ず宣言してから使うようにした方がよいと思います。


では、次ぎに実行ボタンを押すと、
国語から英語までの合計が出て、
消去ボタンを押すと、そのすべてが消えるように、
コードを付け加えましょう。



第1話へ 第3話へ

004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ第2部へ
小学生からエンジニアまでのRuby入門へ
小学生からエンジニアまでのC言語入門 基礎から応用まで
本サイトトップへ