第25講 n進数を10進数に翻訳する
第4話 禁則違反を警告する
コード例
Private Sub CommandButton1_Click()
Dim m As Long, n As Integer
Cells(7, 6) = ""
n = Cells(6, 3)
m = Cells(7, 3)
f n, m
End Sub
Sub f(n As Integer, m As Long)
Dim a As Long
Dim i As Long, j As Long, h(100000000) As Byte, w As Long
w = m
a = 0
Do While w > 0
w = Int(w / 10)
a = a + 1
Loop
For i = 0 To a - 1
w = 1
For j = 0 To i
w = w * 10
Next
h(a - i - 1) = Int((m Mod w) / (w / 10))
If h(a - i - 1) > n - 1 Then
Cells(7, 6) = "n進数の入力が禁則に反しています。各位の数字はn-1以下でなければなりません。正しく入力しましょう。"
Exit Sub
End If
Next
w = h(0)
For i = 1 To a - 1
w = n * w + h(i)
Next
Cells(8, 3) = w
End Sub
Private Sub CommandButton2_Click()
Range("c6:c8").Select
Selection.ClearContents
Cells(7, 6) = ""
Range("A1").Select
End Sub
実行画面例
では次の課題です。
今回ループ文で課題を成就しましたが、
関数の再帰的呼び出しによって課題を成し遂げるにはどうしたらよいでしょうか。
第3話へ 第5話
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る