当前位置: 首页 > 学习 > 电脑学习 > 电脑基础 > PPT教程 > 正文

为“窗体”添加代码

http://www.zk168.com.cn  招考学习网 2006-1-17 2:20:06
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
   在第三十八节中我们学习了如何在“VBE”(VB编辑器)中制作一个“窗体”,方法十分简单只需在插入的“窗体”上,将“控件”画到上就可以了。

   在上节中我们制作了一个名为:“VBA—乘法”的窗体,在这个窗体上放置了两个“标签”控件、两个“文本框”控件和一个“命令按钮”控件,之后我们在“窗体”窗口中,双击窗体上“CAPTION”属性被命名为“确定”的那个“按钮”控件,这时会看到“窗体”消失了,取而代之的是一个输入“VBA”代码的窗口,并且可以看到“VBE”自动生成的两段代码(绿色),代码如下所示:

   Private Sub CommandButton1_Click()
   "在这里输入相应的代码
   End Sub

   上面两段代码表示的是一个“事件”,即“单击”事件,当我们在这个两段代码中输入一些VBA代码后,并在“窗体”运行中,单击这个“确定”按钮,就会自动运行这个“单击”事件中的所有代码,其实“命令按钮”控件,除了“单击”事件外,MICROSOFT公司还提供了很多其他的“事件”,如“鼠标移动”、“双击”、“鼠标按下”等等。VB编辑器根据不同的控件可以触发不同的“事件”,也就是说我们在VBE中编程是“面向对象”的编程(在VBA中所有的控件都是“对象”,每个对象都有它相应的“属性”、“方法”和“事件”。)。

   好我们在上两段“按钮单击事件”代码中输入如下代码(蓝色部分):

Private Sub CommandButton1_Click()
Dim mytext1 As Currency
Dim mytext2 As Currency
Dim my As Currency

"以上为声明“TextBox1”、“TextBox2”和乘积“MY”三个变量为:货币型
"我们除了可以一个一个的多行声明变量外,还可以在一行中连续声明不同类型的变量,方法是在每个变量后面加一个逗号。
"例如:Dim mytext1 ,mytext2 As Currency

mytext1 = TextBox1.Value "让变量mytext1等于TextBox1控件的输入的值
mytext2 = TextBox2.Value "让变量mytext2等于TextBox2控件的输入的值
my = mytext1 * my t2 "让TextBox1和TextBox2的值相乘
MsgBox mytext1 & "×" & mytext2 & "=" & my, vbInformation, "乘积得值"

"得到乘积并用“msgbox”函数显示出来。
End Sub

图(1)

   同理我们也可以通过双击的方法,设置文本框“TextBox1”和“TextBox2”两个控件的“改变”事件,即如果在“窗体”运行中,我们改变了这两个“TextBox”中的值,那么我们就会激活该“事件”代码(绿色部分)中的执行代码(蓝色部分),如下的“改变”事件代码是防止在输入“乘数”和“被乘数”时,误输入了文字而非数字而编写的,这将保障我们输入的值一定是一个数字。

Private Sub TextBox1_Change()
If IsNumeric(TextBox1.Value) = False Then

"使用“IsNumeric”函数测试"TextBox1"的值是否为一个数值,然后用条件语句“IF THEN”判断这个值是否为“FALSE”。

TextBox1.Value = "0" "如果判断结果不是数值那么“TextBox1”的值将设为0值,否则直接跳出条件语句。
End If
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) = False Then

"使用“IsNumeric”函数测试"TextBox2"的值是否为一个数值,然后用条件语句“IF THEN”判断这个值是否为“FALSE”。

TextBox2.Value = "0" "如果判断结果不是数值那么“TextBox2”的值为0值,否则直接跳出条件语句。
End If
End Sub

   在上一节中我们没有设置“TextBox1”和“TextBox2”这两个控件的初始“TEXT”属性,默认情况下,这两个“文本框”的“TEXT”属性值是空值,如果我们在没有输入任何数值的情况下,点击了“确定”按钮后,会产生“运行时错误"13"类型不匹配”这个错误,如何解决这个问题呢?

   我们可以查看图(2):首先,点击左上角的那个“对象”下拉菜单找到“UserForm”窗体,而在右面的“事件名”下拉菜单中,找到如图(2)所示的“Initialize”这个事件,即如果我们在VBE“标准”工具栏中点击“运行子程序/用户窗口”这个工具按钮,那么“窗体”就会自动执行“Initialize”初始化事件中的代码。好我们点击“Initialize”这条下拉菜单,在代码窗口中马上就自动产生如下所示的“UserForm 初始化事件”代码,显示的代码(绿色)如下:

Private Sub UserForm_Initialize()
End Sub

   之后我们在这窗体初始化“事件”代码中输入如下两段代码(蓝色):

TextBox1.Text = "0"
TextBox2.Text = "0"

   让两个文本框在加载“窗口事件”的时候,直接得到初始值:“0”,最终执行的结果如图(1)所示。

图(2)

   现在我们就可以使用这个窗体做的“乘法”公式了,最终执行的结果如图(3)所示。

图(3)

   为了方便大家我们将所有代码放到一起,大家可以使用复制的方法,将以下的代码直接拷入到你的“窗体代码”域中。

Private Sub CommandButton1_Click()
Dim mytext1 As Currency
Dim mytext2 As Currency
Dim my As Currency
"以上为声明TextBox1、TextBox2和乘积得值
mytext1 = TextBox1.Value "让mytext1等于TextBox1的值
mytext2 = TextBox2.Value "让mytext2等于TextBox2的值
my = mytext1 * mytext2 "让TextBox1和TextBox2的值相乘
MsgBox mytext1 & "×" & mytext2 & "=" & my, vbInformation, "乘积得值" "得到乘积并用“msgbox”函数显示出来。
End Sub

Private Sub TextBox1_Change()
If IsNumeric(TextBox1.Value) = False Then "测试"TextBox1"的值是否为一个数值。
TextBox1.Value = "0" "如果不是数值那么“TextBox1”的值为0值,否则可以计算。
End If
End Sub

Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) = False Then "测试"TextBox2"的值是否为一个数值。
TextBox2.Value = "0" "如果不是数值那么“TextBox2”的值为0值,否则可以计算。
End If
End Sub

Private Sub UserForm_Initialize()
TextBox1.Text = "0"
TextBox2.Text = "0"
End Sub

   我们将这个“乘法窗体”及其“代码”制作完后,如何将这个窗体和Powerpoint幻灯片结合起来使用呢?方法是:在Powerpoint幻灯片“普通”视图中,点击菜单“视图”—“工具栏”—“控件工具箱”工具栏,然后找到一个名为:“命令按钮”这个控件,单击后将这个控件画到Powerpoint幻灯片中,下一步是双击这个“命令按钮”,(默认情况下这个按钮的名称是:“CommandButton1”)这时“VBE”被打开,会看到“代码输入”窗口被弹出,并且产生了如下所示的代码:

Private Sub CommandButton1_Click()
End Sub

   最后将这两段代码中,输入显示“乘法窗体”的代码(蓝色):

乘法窗体.Show

   好了,我们回到Powerpoint幻灯片普通视图中,点击功能键“F5”,就可以在幻灯片演示的时候,通过点击这个“CommandButton1”来执行这个“乘法”宏窗体了。

   最后复习本节中的内容,在上节做作“窗体”的基础上,我们又为该“窗体”添加了代码。注意“窗体”及所有“控件”都有各自的“属性”、“方法”和“事件”,如果想熟练的掌握,需要大家多多练习。

待续...
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·关于\"&\"运算符效率低下的问题
·改进ASP应用程序中的字符串处理性能
·如何提高IIS 5.0网站伺服器的执行效率呢
·加速ASP程序的显示速度
·提高ASP页面的执行效率
·如何增强ASP程序性能
·认识和优化connection对象
·微软建议的ASP性能优化28条守则
·什么才是提高ASP性能的最佳选择(三)
·什么才是提高ASP性能的最佳选择(二)
相关内容:
 
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>