靠谱电子书 > 经管其他电子书 > excel_vba_编程教程(完整版) >

第32部分

excel_vba_编程教程(完整版)-第32部分

小说: excel_vba_编程教程(完整版) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



       Dim myChoice As Integer   
       question = 〃Do you want to open a new workbook?〃   
       myButtons = vbYesNo + vbQuestion + vbDefaultButton2   
       myTitle = 〃New workbook〃   
       myChoice = MsgBox(question; myButtons; myTitle)   
       MsgBox myChoice   
End Sub   
在上面的过程里,你将MsgBox函数的结果赋给变量myChoice。注意,现在,MsgBox函数的参数列在 
括号里面:  
myChoice = MsgBox(question; myButtons; myTitle)  
当你运行MsgYesNo3时,出现带有两个按钮的信息框,当你点击“是”时,MsgBox myChoice将显示 
数字6;当点击“否”则得到数字7。你将在第五章里面学习如果让程序根据按钮的选择进行不同的 
任务。  
技巧4-11 MsgBox函数——使用还是不使用括号?  
当你需要使用MsgBox函数返回的结果时,需要使用括号将该函数的参数包括起来。不使用括号,意 
味着你告诉VB你将忽略该函数的结果。当MsgBox函数包含两个或以上的按钮时,你很可能想要使用 
该函数的结果。  

13。使用 InputBox 函数  

InputBox函数显示一个信息提示用户输入数据,这个对话框有两个按钮——“确定”和“取消”, 
当你点击确定时,InputBox函数返回用户输入在信息框里的信息;当你点击取消时,函数则返回空 
字符串(” ”)。InputBox函数的语法显示如下:  
InputBox(prompt '; title' '; default' '; xpos' '; ypos' _ '; helpfile; context')   
第一个参数,prompt,是你想要显示在对话框上的信息,你可以使用函数Chr(13)或Chr(10)将长文 
本打断为几行(参见本章中使用MsgBox函数的例子)。剩下所有的参数都是可选的。  
第二个参数,title,让你改变对话框的默认标题,默认的标题是Mictosoft Excel。  
InputBox函数的第三个参数,default,让你在文本框里显示一个默认值,如果你忽略这个参数的 
话,显示的将是空白编辑框。  
接下来的两个参数,xpos和ypos,允许你设置该对话框在屏幕上出现的位置,如果你忽略这两个参 
数,对话框就会出现了当前窗口的中央,xpos参数决定对话框在屏幕上从左起的水平位置,忽略它 
时,对话框显示在水平中央,而ypos参数决定对话框在屏幕从上而下的竖直位置,忽略它,对话框 
就在竖直大约三分之一的位置。xpos和ypos都使用一个叫twips的专门单位衡量,1twip大约等于 
0。0007英寸。  
最后两个参数,helpfile和context,和在本章前期讨论的MsgBox函数相应的参数使用方法一样。  
现在你知道了InputBox参数的意义了,我们来看看这个函数的使用示例:  
1。  在MyFunctions (Chap04。xls)工程里添加一个新模块,重命名为Sample8  
2。  激活Sample8模块,并且输入下列子程序:  
Sub Informant()   
       InputBox prompt:=〃Enter your place of birth:〃 & Chr(13) _   
              & 〃 (e。g。; Boston; Great Falls; etc。) 〃   
End Sub   
上面的过程显示一个带两个按钮的对话框,输入提示显示在两行里。象MsgBox函数一样,如果你想 
要使用用户输入的数据,那么你应该使用一个变量来储存该对话框结果。下面显示的子程序 
Informant2将InputBox函数的结果赋值给变量town:  

                                           95 

… 页面 112…

                                                       
图4-10 Informant子程序产生的对话框  
Sub Informant2()   
       Dim myPrompt As String   
       Dim town As String   
       Const myTitle = 〃Enter data〃   
       myPrompt = 〃Enter your place of birth:〃 & Chr(13) _   
              & 〃(e。g。; Boston; Great Falls; etc。)〃   
       town = InputBox(myPrompt; myTitle)   
       MsgBox 〃You were born in 〃 & town & 〃。〃; ; 〃Your response〃   
End Sub   
注意,这次,InputBox函数的参数列在了括号中间。如果你需要在稍后的程序中需要使用InputBox 
函数的结果,那么括号是必须的。Informant2子程序使用常数来确定显示在对话框标题上的文本。 
因为,这个值在过程执行过程中从始至终都是保持不变的,所以,可以将对话框的标题声明为一个 
常量,然而,如果你愿意,你也可以使用一变量。  
当你运行使用了InputBox的过程时,使用该函数的对话框总是出现在屏幕的同一位置,你可以按前 
面解释的那样,提供xpos和ypos参数来改变对话框的位置。  
3。  修改过程Informant2中的InputBox函数,让对话框显示在屏幕的左上角,例如:  
town = InputBox(myPrompt; myTitle; ; 1; 200)  
注意,参数myTitle后面紧跟两个逗号,第二个逗号是忽略掉的默认值参数。下面两个参数决定对 
话框的水平和竖直位置。如果你忽略了参数myTitle后面的第二个逗号,VB将会使用数字1作为默认 
值。如果你使用了参数名称的话,(例如,prompt:=myPrompt; title:=myTitle; xpos:=1;  
ypos:=200),你就不必记住在每个忽略了参数的地方加逗号了。  
如果你输入了一个数字,而不是一个城镇的名称,后果会怎样?因为,用户经常会在对话框里输入 
错误的数据,所以,你的程序必须验证用户输入的数据是否可以在将来的数据操作里使用。InputBox 
函数本身并没有提供验证数据的工具,要验证用户的输入,你必须使用其它的VBA指令,这将在下 
章里讲述。  

14。数据类型转变  

InputBox函数的结果总是字符串,如果用户输入的是个数字,用户输入的字符串值必须转换成为数 
字值之后,才能用于你程序里的数学计算。VB转换数据类型轻而易举,不过,在早期的Excel版本 
里,这是不可能的。  
1。  激活模块Sample8,并输入以下过程AddTwoNums:  
Sub AddTwoNums()   
       Dim myPrompt As String   
       Dim value1 As String   
       Const myTitle = 〃Enter data〃   
       Dim mySum As Single   
       myPrompt = 〃Enter a number:〃   
       value1 = InputBox(myPrompt; myTitle; 0)   
       mySum = value1 + 2   
       MsgBox mySum & 〃 (〃 & value1 & 〃 + 2)〃   
End Sub  

                                           96 

… 页面 113…

                                                        
图4-11 要给用户提示数据的确切类型,你可以在编辑框里提供一个默认值  
上面的程序显示如图4-11所示的对话框。注意,这个对话框使用了两个专门的功能,InputBox函 
数的可选参数标题和默认值。该对话框显示了有常量myTitle确定的文本字符串作为标题,而不是 
默认的“Microsoft Excel”。在编辑框里面的0提示用户输入数字,而不能输入文本。一旦用户输 
入了数据并点击确定时,用户的输入就被赋值给了变量value1  
value1 = InputBox(myPrompt; myTitle; 0)  
变量value1的数据类型是字符串,你可以在上面指令的下面加上如下语句,快速地查看它的数据类 
型:  
MsgBox varType(value1)  
当VB运行上面的代码时,将显示信息-数字8,你可以在本章的图4-4里查看该数字代表字符串类 
型。  
技巧4-12 定义常量  
你可以将标题文本赋值到一个常量上,以确保某个VBA程序里所有的标题栏都显示相同的 文本。依 
照这个技巧,你可以在多次输入某标题文本时节省时间。  
技巧4-13 避免类型不匹配错误  
如果你试图在Excel的早期版本里(2000以前版本)运行AddTwoNums过程,当VB试图执行下列代码 
行时,你将得到类型不匹配的错误:  
mysum = value1 + 2  
使用内置函数CSng将储存于value1的字符串转换为一个单精度浮点类型的数字,可以避免类型不匹 
配错误,代码写成:  
mysum = CSng(value1) + 2  
下一行,mySum = value1 + 2,在用户输入的数据上加上2,并且将计算结果赋值给变量mySum。因 
为变量value1的数据类型时字符串,在使用它计算之前,VB在后台进行数据类型的转换,VB知道转 
换的需要。没有它,两种不兼容的数据类型(文本和数字)将会产生类型不匹配错误。程序最后是 
一个MsgBox函数,显示计算的结果已经给用户显示总数是如何组成的。  

15。使用 InputBox 方法  

除了InputBox函数之外,还有InputBox方法,如果你激活对象浏览器,然后搜索“inputbox”,VB 
将显示两个InputBox——一种为Excel库,另一种为VBA库(见图4-12)。InputBox方法在Excel库 
里面可用,它的语法和本章前面讲的InputBox函数的语法有轻微差别,它的语法为:  
expression。InputBox(Prompt;     'Title';   'Default';    'Left';    'Top';    'HelpFile';  
'HelpContextID'; 'Type' )  
所有方括号里面的参数都是可选的。Prompt(提示)参数是显示于对话框上的信息;Title是对话 
框的标题;而Default是对话框上文本框里的初始值。Left和Top参数是明确对话框在屏幕上的位置。 
这些参数的输入值的单位是Point(1/72英寸)。当用户点击帮助按钮时,参数HelpFile和 
HelpContextID明确帮助文件名称以及某个明确的帮助主题。InputBox方法的最后一个参数—— 
Type(类型)明确返回的数据类型。如果你忽略这个参数,InputBox方法将会返回文本格式。类型 
参数的值列在表4-3里。  

                                           97 

… 页面 114…

                                                               
图4-12 别忘记使用对象浏览器来搜索VB函数和方法  
表4-3 InputBox方法返回的数据类型  
值                           返回的数据类型  
0                            公式  
1                            数字  
2                            字符串(文本)  
4                            逻辑值(True或False)  
8                            单元格引用,作为一个Range对象  
16                           错误值,例如#N/A  
64                           数组  
  
如果你使用3作为Type参数的话,用户将既可以输入一个数字也可以输入一个文本。这个值是将1 
 (数字)和2(字符串)加和而得到的。InputBox方法很适合那些需要用户选择工作表单元格范围 
的VBA程序。  
1。  关闭对象浏览器,如果你已经打开了的话  
2。  在模块Sample8里面,输入下列过程WhatRange:  
Sub WhatRange()   
       Dim newRange As Range   
       Dim tellMe As String   
       tellMe = 〃Use the mouse to select a range:〃   
       Set newRange = Application。InputBox(prompt:=tellMe; _   
              Title:=〃Range to format〃; _   
              Type:=8)   
       newRange。NumberFormat = 〃0。00〃   
       newRange。Select   
End Sub   
过程WhatRange开始于一对象变量的声明——newRange。试回想一下第三章,对象变量指向数据的 
地址。用户选择的单元格被赋值给对象变量newRange。注意变量名称前面的关键字Set:  
Set newRange = Application。InputBox(prompt:=tellMe; _   
  Title:=〃Range to format〃; _   
  Type:=8)   
类型参数(Type:=8)使用户能够选择任何单元格区域。当用户选中单元格区域时,下句指令:  

                                         98 

… 页面 115…

newRange。NumberFormat = 〃0。00〃  
改变所选单元格的格式。最后一句选择用户加亮的区域。  
3。  运行过程WhatRange。VB显示一个对话框,提示用户在工作表里选择一个单元格区域。  
4。  使用鼠标选择你要的单元格,当鼠标在单元格上拖动时,VB就会将选择的区域引

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的