虽然不清楚你是哪个按钮来实现连加,按照你的代码只有case 4代表+键执行了计算。
我之前做过一个计算器的练习,是和一般计算器一样的, 1 + 1, 一直按=, 每次+1。(我们那个时候拿这个比手速,无聊吧

)
我是这样实现的
控件(数组)
1~9: CommandNum
     数字按钮
+-*/: CommandOpr
    运算符按钮
= : CommandEqual
    求解按钮
全局变量声明

程序代码:
Dim  Val1, Val2 as single '第一、二运算数
Dim OperStr as integer    '运算符,index=0~3分别为+ - * /
Dim NewNum as boolean    '是否新的输入
Dim FinishOpr            '是否计算完成
全局变量初始化,启动时或者按下CE之后

程序代码:
OperStr =1    ' 
NewNum =True    '
FinishOpr=True
下面部分代码用中文写了,意思你明白就好
点击数字按钮

程序代码:
If NewNum=True then 
 TextNum.text=TextNum.text & (Index+1) '当显示的是上次计算结果时,输入的是新数字
 NewNum=false  '
else 
 TextNum.text=TextNum.text & (Index+1)
End if 
点击运算符按钮

程序代码:
if trim(TextNum.text) ="" then Exist sub  '输入不为空的时候执行, 为空的时候不执行任何
if NewNum then Exist sub  '避免连续按,如1++
if FinishOpr=true then   ' 前面没有未完成的运算,如按1  按+, 按下+ 之后,
 val1=csng(TextNum.text)   '输入传递给第一运算数
 OperStr=index      '保存运算符号
 FinishOpr=false   ' 
Elseif  FinishOpr=false then   ' 前面有未完成的运算,如按1  按+, 按1  按+, 第二次按下+ 室,前面有1+1了,必须先做一个计算
  val2=csng(TextNum.text)   '输入传递给第2运算数 
  TextNum.text=FunctionOper(val1,val2,OperStr)  ’ 根据之前的输入和运算符计算,并显示
  val1=csng(TextNum.text)   '计算结果传递给第一运算数
  OperNum=1
End if
 NewNum=True        ' 按下任意运算符之后,再按数字按钮就是新的数字
等于按钮

程序代码:
  if  newnum then   '如果显示的是上次计算的额结果
    ’沿用原来的Val1, val2相加, 按1  按+, 按1, 一直按=  就是1+1+1+1+1+1+1+1的效果
  Elseif  newnum =false then '如果显示的是手动输入的数字
   val2=csng(TextNum.text)   '输入传递给第2运算数
  End if   
   TextNum.text=FunctionOper(val1,val2,OperStr)  ’ 
FunctionOper 这个就简单了,不用我写了吧