第4講 数字型変数を理解しよう

第9話 数字の加工

魔方陣を作るときに必要なのは列や行などの合計です。
したがいまして、
1+2+3+4+5+6+7+8+9+10
のような計算が自在にできなければなりません。
その手がかりを得るために、
1+2+3を考えてみましょう。
複雑な問題のヒントを考えるために、
単純化した問題を考える、
プログラミングだけでなく、分野を問わず有効な考え方ですね。

さて、1+2+3の計算をさせるのに、
Private Sub CommandButton1_Click()
  Dim a As Byte, b As Byte, c As Byte
  a = 1
  b = 2
  c = 3
  Cells(6, 1) = "1+2+3の計算結果は?"
  Cells(7, 1) = "1+2+3="
  Cells(7, 2) = a + b + c
End Sub

というのが1つの答えです。
ですが、前話の最後の方に用意する箱は、
1つであると書いてあったことを思い出してください。
用意する箱を1つにして、このマクロを改善してください。
解答例は、例によって30行下です。



























解答例
Private Sub CommandButton1_Click()
  Dim w As Byte
  w = 0
  w = w + 1
  w = w + 2
  w = w + 3
  Cells(6, 1) = "1+2+3の計算結果は?"
  Cells(7, 1) = "1+2+3="
  Cells(7, 2) = w
End Sub



『えっ?』
と感じている方、多いですよね。
そうです。
初心者には難しいところですので、解説しましょう。
尚、そんなの簡単だよと思った方もいらっしゃるかもしれませんが、そんな優秀な方も
後の繰り返し処理(For文)につながる大事な考え方ですので、
以下を熟読してください。
最初の2行
  Dim w As Byte
  w = 0
については、特に疑問はないと思いますが、
3行目から5行目の
  w = w + 1
  w = w + 2
  w = w + 3
には???の方も当然いらっしゃいますよね。
=が数学のイコールならw = w + 1なんてことあり得ません。
左辺のwを右辺に移項するなら、
w - w = 1 から 0 = 1 になってしまいます。
この話を聞いて、
第3講 文字型変数を理解しよう
第6話 =の意味
の話を思い出した方多いのではないでしょうか。
そうです。
=は決してイコールではなく、むしろ←をイメージした方がよかったですよね。
  w ← w + 1
つまり、
  Dim w As Byte
  w = 0
  w = w + 1
  w = w + 2
  w = w + 3
でやっていること図にしますと、
s1

ということになります。
1+2+3についてはおわかりになったと思います。
では、1+2+3+4+5+6+7+8+9+10について考えてみてください。



8話へ 第10話へ



トップ


初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ