2013-08-27 6 views
-2

저는 Excel 기반의 계산기 마녀를 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

하위 루틴/함수 외부에서만 변수와 상수를 선언 할 수 있습니다. 이와 같이

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

필요가 있을까요? 아마도 useform 초기화 루틴입니까?

+0

여전히 대기 중입니다. –

관련 문제