2013-08-27 112 views
-2

我試圖製作一個基於excel vba的計算器巫婆發佈輸出結果給Excel表格中的特定單元格,但是當我試圖調用用戶表單時發生錯誤編譯錯誤:無效的外部程序我的宏代碼如下編譯錯誤:外部程序無效

'Declare the global variables to be used throughout the form 
Dim mfirst As Single 
Dim msecond As Single 
Dim manswer As Single 
' Declare the global variables for the operators: Add,Sub,Mul and DIV 
Dim mbutton As Integer 
Dim ws As Worksheet 
Set ws = Worksheet("entry") 
ws.Range("b4").Value = manswer 
'Change the sign of the number from + or - or vice versa 
' Depending on its state now they show in txtNUMBER text box 
Dim Signstate As Boolean 
Private Sub Backspc_Click() 
TXTnumber = Len(TXTnumber) - 1 
End Sub 

Private Sub cmd0_Click() 
'Put the value 0 into the txtNUMBER text box 
TXTnumber = TXTnumber + "0" 
End Sub 

Private Sub cmd1_Click() 
'Put the value 1 into the txtNUMBER text box 
TXTnumber = TXTnumber + "1" 
End Sub 

Private Sub cmd2_Click() 
'Put the value 2 into the txtNUMBER text box 
TXTnumber = TXTnumber + "2" 
End Sub 

Private Sub cmd3_Click() 
'Put the value 3 into the txtNUMBER text box 
TXTnumber = TXTnumber + "3" 
End Sub 

Private Sub cmd4_Click() 
'Put the value 4 into the txtNUMBER text box 
TXTnumber = TXTnumber + "4" 
End Sub 

Private Sub cmd5_Click() 
'Put the value 5 into the txtNUMBER text box 
TXTnumber = TXTnumber + "5" 
End Sub 

Private Sub cmd6_Click() 
'Put the value 6 into the txtNUMBER text box 
TXTnumber = TXTnumber + "6" 
End Sub 

Private Sub cmd7_Click() 
'Put the value 7 into the txtNUMBER text box 
TXTnumber = TXTnumber + "7" 
End Sub 

Private Sub cmd8_Click() 
'Put the value 8 into the txtNUMBER text box 
TXTnumber = TXTnumber + "8" 
End Sub 

Private Sub cmd9_Click() 
'Put the value 9 into the txtNUMBER text box 
TXTnumber = TXTnumber + "9" 
End Sub 

Private Sub cmdADD_Click() 
'User slected the add button 
mbutton = 1 
'Convert into a number and transfer the value from 
'The text box on the form into the first number 
mfirst = Val(TXTnumber) 

TXTnumber = "" 
End Sub 



Private Sub cmdSUBTRACT_Click() 
'User slected the minus button 
mbutton = 2 
'Convert into a number and transfer the value from 
'The text box on the form into the first number 
mfirst = Val(TXTnumber) 

TXTnumber = "" 
End Sub 

Private Sub cmdMULTIPLY_Click() 
'User slected the multiply button 
mbutton = 3 
'Convert into a number and transfer the value from 
'The text box on the form into the first number 
mfirst = Val(TXTnumber) 

TXTnumber = "" 
End Sub 

Private Sub cmdDIVIDE_Click() 
'User slected the Divide button 
mbutton = 4 
'Convert into a number and transfer the value from 
'The text box on the form into the first number 
mfirst = Val(TXTnumber) 

TXTnumber = "" 
End Sub 
Private Sub cmdEQUALS_Click() 
msecond = Val(TXTnumber) 

Select Case mbutton 
Case Is = 1 
manswer = mfirst + msecond 
Case Is = 2 
manswer = mfirst - msecond 
Case Is = 3 
manswer = mfirst * msecond 
Case Is = 4 
manswer = mfirst/msecond 
End Select 
TXTnumber = manswer 
End Sub 
Private Sub cmdDOT_Click() 
TXTnumber = TXTnumber + "." 
End Sub 
Private Sub cmdSIGN_Click() 
'Sign state = false on load of form 
If TXTnumber = "-" + TXTnumber Then 
    MsgBox "error start again" 
End If 
If Signstate = False Then 
TXTnumber = "-" + TXTnumber 
Signstate = True 
Else 
'SignState = True 

minusvalue = Val(TXTnumber) 
'Value now positive 
minusvalue = Val("-1" * minusvalue) 
TXTnumber = minusvalue 
Signstate = False 

End If 
End Sub 
Private Sub cmdEXIT_Click() 
Unload frmCALCULATOR 
End Sub 

Private Sub cmdCANCEL_Click() 
'Remove the values in the txtNUMBER text box 
TXTnumber = " " 
End Sub 

回答

0

您只能在Sub例程/函數之外聲明變量和常量。因此,

Set ws = Worksheet("entry") 
ws.Range("b4").Value = manswer 

需要在一個子,也許是useform初始化例程嗎?

+0

還在等待其不工作 –