第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話

004
  


VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る