新手求教!关于VB制作计算器的问题
											怎么实现累加(减),累乘(除)的功能?										
					
	
				
											按下等号时,根据第一次的符号 进行累加(减)或 累乘(除)
累乘(除) 这个真没见过这个功能是怎么样的。
这样需要有一个按钮显示累加值。
AC 负责清当前数据和累加值。
C 负责清当前数据,但不清累加值。
复杂多了。。。。。。
										
					
	
	
	
			
程序代码:
Dim num1, num2 as string   '第一和第二运算数
Dim operater as integer    '运算符
Dim opr as boolean         '存放是否刚按过运算符
Dim cal as boolean         '存放是否已经执行完计算
Sub CommandCE_Click ()
 num1=""
 num2=""
 operater =-1 '初始化,0~3留给运算符,取0~3之外的就可以
 opr =false
 cal =false
End sub 
'当按下数字键:Index与数字从0到9一一对应
sub CommandNum_Click(Index As Integer)    '若非控件数组,这个函数拆开到各数组键对应的Click事件中
  if opr then   '如果刚按过运算符,输入的应该是新数字,将文本框textnum清空
   textnum.text=""    
   opr =false   '修改变量
  End if 
 nums=textnum.text
 textnum.text=cdbl(nums & Index)  '输入的数直接在原数字后
 '可能显示或者其他的,还需要一些代码。 酌情增加
End sub
'按下小数点
sub CommandDot_Click()
  if opr or cal  then   '如果刚按过运算符或者=,输入的应该是新数字,将文本框textnum清空
   textnum.text=""    
   opr =false   '修改变量
   cal=false
  End if 
 if instr(textnum.text,".") then exit sub  ’ 数字中已经有“.”
 textnum.text=cdbl(nums & ".")  '直接在原数字后加 “.”
 '可能显示或者其他的,还需要一些代码。 酌情增加
End sub
'按下运算符: 同样是控件数组,0~3 分别对应+、-、*、/
Sub CommandOpr_click(Index As Integer)
 if not cal And num1<>"" and num2<>"" and (operater >=0 and operater <=3) then 
    CommandEq_Click   '当前面的运算未完成时, 例如: 1+3  (没有按等号) +2, 先计算1+3 
 End if
 
 num1=Getnum(text1.text)
 operater =index
 opr =ture
 cal=false    
End sub
'按下=
Sub CommandEQ_Click()
 if operater <0 and operater >3 then exit sub  '没有按下运算符时,不执行
 
 if opr then exit sub  '按下运算符时,但是未输入第二个运算数字时,不执行
 
  
  if cal then   '当连续点=时,textnum.text取出的放在num1, 保留原来的num2。 例: 3+1=====  相当于3+1+1+1+1
    num1= getnum(textnum.text)
  else  如果不是连续的点击=, textnum.text取出的放在num2(num1在点击运算符的时候已经读入了)
     num1= getnum(textnum.text)  
  End if
  
  ’执行运算
  if num1<>"" and num2<>"" then 
    Select case operater 
     case 0
      text.num1=cdbl(num1)+cdbl(num2)
    case 1
      text.num1=cdbl(num1)-cdbl(num2)
    case 2
      text.num1=cdbl(num1)*cdbl(num2)
    case 3
      on error resume next
      text.num1=cdbl(num1)/cdbl(num2)  
      if err then 
        err.clear
        msgbox "除数为零,强制重置"
        CommandCE_Click   '强制重置
      End if
   End Select
 End if
 
 cal=true 
 
End Sub
Function Getnum(a as string) as String 
 if a="" Or a="."then   '将无法转换为数值型的进行处理一下
   Getnum="0"
 Else 
   Getnum=a
 End if  
End Function
[此贴子已经被作者于2016-9-6 10:54编辑过]