求Sn=a+aa+aaa+…+aaa…a(n个a)之值,其中a是一个数字。例如:1+11+111+…+111111(此时n=6)。a和n在程序运行时由键盘输入
请看看这个哪里错了 或者有新的代码也行 谢谢谢谢帮忙Private Sub Command1_Click()
Dim i As Integer,
Dim a As Double, b As Double, tn As Double, sn As Double
Picture1.Cls
i = 1: tn = 0: sn = 0
a = Val(Text1.Text)
b = a
If Val(Text1.Text) > 0 And Val(Text1.Text) < 10 And Val(Text2.Text) > 2 Then
  Do While (i <= CInt(Text2.Text))
     tn = tn + a
     sn = sn + tn
     a = a * 10
     i = i + 1
  Loop
Else
  MsgBox "请输入10以内的自然数!", vbOKOnly + vbInformation, "数据错误"
End If
Picture1.Print b & "+" & b & b & "+..." & "+"; tn & " = "; sn
End Sub

解决方案 »

  1.   

    如果担心溢出,控制一下 Text2 的值。
      

  2.   

    新代码:
    Private Sub Command1_Click()
        Dim i As Integer
        Dim a As Double, sn As Double
        Picture1.Cls
        
        b = Val(Text1.Text)
        sn = b
        If Val(Text1.Text) > 0 And Val(Text1.Text) < 10 And Val(Text2.Text) > 2 Then
            For i = 2 To Val(Text2.Text)
                sn = sn + CDbl(String(i, Trim(Text1.Text)))
            Next
        Else
            MsgBox "请输入10以内的自然数!", vbOKOnly + vbInformation, "数据错误"
        End If
        Picture1.Print b & "+" & b & b & "+..." & "+"; tn & " = "; sn
    End Sub
      

  3.   

    Dim a As Double, sn As Double
    -------------------------------
     Dim b As Double, sn As Double
      

  4.   

    Private Sub Command1_Click()
        Dim i As Integer
        Dim a As Double, sn As Double
        Picture1.Cls    a = Val(Text1.Text)
        sn = a
        If Val(Text1.Text) > 0 And Val(Text1.Text) < 10 And Val(Text2.Text) > 2 Then
            For i = 2 To Val(Text2.Text)
                sn = sn + CDbl(String(i, CStr(a)))
            Next
        Else
            MsgBox "请输入10以内的自然数!", vbOKOnly + vbInformation, "数据错误"
        End If
        Picture1.Print a & "+" & a & a & "+..." & "+"; String(i - 1, CStr(a)) & " = "; sn
    End Sub
      

  5.   

    Private Sub Command1_Click()
    Dim s(), a As Integer, n As Integer, i As Integer, sn As Double
    a = CInt(InputBox("please enter a :", "", 1))
    n = CInt(InputBox("please enter n :", "", 6))
    ReDim s(1 To n)
    For i = 1 To n
    s(i) = String(i, CStr(a))
    sn = sn + s(i)
    Next
    MsgBox Join(s, "+") & "=" & sn
    End Sub