没问题,效果非常好,
只不过:
    dim cleardisplay As Boolean
  
    cleardisplay = True      cleardisplay = False这几句不妥,这样cleardisplay等于没起作用,如果要把它作为是否清空的标志的话,因该放在过程外面,作为全局变量,这样可以在其他过程里控制它,否则你这个变量只在digits_Click这里面起作用,其他过程调用不到(如果你在外面调用cleardisplay,实际上系统帮你重新定义了一个新的局部变量),你的错误描述不详细,但我猜你指的可能是这个问题~还有很多要学的,继续努力吧

解决方案 »

  1.   

    建议你今后编程的时候在每个模块顶部声明部分放上一句
    Option Explicit
    或者你找菜单:
    工具-->选项,里面编辑器一栏有一个要求声明变量,你把它勾上,这样每个模块都会自动加上Option Explicit这样你的变量定义有问题的话会自动提醒你
      

  2.   

    还有这一句:
    display.Caption = display.Caption + digits(Index).Caption实际上执行的是字符串相加,也就是 "1"+"2"+"3"="123"
    我想既然是计算器,你要的应该就是这样的效果
    如果你要 1+2+3=6这样的效果的话,就要用Cint函数转换一下每个变量
    像这样:
    display.Caption = cint(display.Caption) + cint(digits(Index).Caption)
      

  3.   

    Sub digits_Click(Index As Integer)
    dim cleardisplay As Boolean
       If cleardisplay Then
         display.Caption = ""
         cleardisplay = False
       End If
    display.Caption = Val(display.Text) + Val(digits(Index).text)
    你可不可以将完整的代码贴出来?是不是应该像这样:
    Private Sub display_Change()
    Cleardisplay=True
    End Sub
    display是不是文本框?