《第8课VBA输入语句Box》由会员分享,可在线阅读,更多相关《第8课VBA输入语句Box(10页珍藏版)》请在人人文库网上搜索。
1、第八课 输入语句Inputbox上一节课讲述了输出语句Msgbox,它可以将某些信息输出到屏幕上。本节课讲述与之对应的输入语句。输入语句主要Inputbox函数和Application.Inputbox方法,它们功能相近,不过后者更强大。第8.1节
Inputbox函数Inputbox函数是VBA中用于录入数据的函数,它可在屏幕上创建一个输入框,等待用户输入字符。当按下“确定”或者“取消”按钮后可返回用户录入的String类型的文本或者空文本(当按下“取消”键时是空文本)。Inputbox可为用户提供数据录入窗口,然后根据用户录入的字符决定下一步的操作。例如下图中,用户的录入信息决定程序的计算
述Prompt作为对话框消息出现的字符串表达式。prompt 的最大长度大约是 1024 个字符,由所用字符的宽度决定Title显示对话框标题栏中的字符串表达式。如果省略 title,则把应用程序名放入标题栏中Defa
3、ult显示文本框中的字符串表达式,在没有其他输入时作为默认值Xpos数值表达式,成对出现,指定对话框的左边与屏幕左边的水平距离。如果省略 xpos,则对话框会在水平方向居中Ypos数值表达式,成对出现,指定对话框的上边与屏幕上边的距离。如果省略
ypos,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置Helpfile字符串表达式,识别帮助文件,用该文件为对话框提供上下文相关的帮助Context数值表达式,由帮助文件的作者指定给某个帮助主题的帮助上下文编号其中最重要的是前面三个参数,包括提示信息、对话框标题和默认值。在特殊情况下,第四、第五参数也具有其实用价值强制指定对话框的显示位置,从而
4、防止对话框挡住当前窗口。8.1.2 案例应用从以下案例中,可以加深对Inputbox的认识。1.定制“另存为”对话框设计一个用于文件另存的对话框,固定保存在C盘下,用户可以随意定制文件名,默认名称为当前日期。代码如下:Sub 工作簿另存() Dim FileName As String 声明变量 弹出一个录入框,让用户指定文件名,默认值为当前日期 FileName =
5、 当前工作簿另存到C盘中, 文件名为用户指定字符 ThisWorkbook.SaveAs c: & FileNameEnd Sub执行以上代码时,将弹出一个“另存为”对话框供用户录入新名称,其默认值为当前日期,如下图所示: 图 2
定制的“另存为”对话框关于以上代码,补充八点:(1)Inputbox的返回值总是文本,如果要求返回值不是文本尽量改用application.Inputbox。本例中用变量FileName来保存Inputbox的值,所以变量FileName的数据类型也用String。(2)date语句用户于获取当前的系统日期,默认的日期格式受控制面板所影响,分隔符有可能是“-”也可能
6、是“/”,而“/”不能作为文件名称,所以本例采用Format函数将它格式化,强制使用“-”作分隔符。(3)Format函数类似于工作表函数text,可以将数值、日期按需求转换格式。而且text函数能用的格式绝大多数都能用于Format中。(4)
InputBox函数的第4、第5参数分别使用10,表示输入框显示在屏幕左上角,离幕屏的上边缘和左边缘的距离都是10。原点是屏幕左上角,而不是Excel应用程序的左上角,当改变Excel的窗口大小可以看出差异。(5) InputBox函数允许用户随意录入字符,也提供默认值。默认值由函数的第三参数决定。(6)按下“取消”按钮时,函数的返回值是空文本,其长度
7、为0。由于文件的名字不可能长度为0,所以为了防错,加入“Exit Sub”,表示用户不指定文件名称就结束过程,不再执行后面的代码。(7) ThisWorkbook表示VBA代码所在工作簿,例如代码写在Book1中,那么ThisWorkbook代表Book1,代码写在Book2中那么ThisWorkbook代表Book2。(8)
Workbook.SaveAs方法表示将工作簿另存,可以使用关键字“Workbook.SaveAs方法”在帮助中搜索到它的详细说明。它的参数是文件路径,查例采用的“c: & FileName”。2.根据指定月份批量创建工作表要求:用户指定一个月份,程序创建以该月每日日期
8、命名的工作表。代码如下:Sub 新建工作表() 批量建立新表,个数等于本月天数,同时对日期命名,并建立目录 Dim i As Byte, months As Byte 声明变量 弹出一个对话框,让用户指定月份,默认显示当前月 months = InputBox(请输入月份,程序将建立该月每日日期命名的工作表, 确定月份, Month(Date)
输入月份(默认值是当前月的月份)录入月份后可以得到以下结果:图 4 以指定月中每日日期命名的工作表针对以上代码需要补充五点:(1)代码中“Dim i As Byte, months As Byte”用于声明变量和变量的数据
10、类型,这是下一节课的讲述重点。本课时稍有了解即可。数据类型Byte的范围是0-255,因为月份和日期的范围是1-12和1-31,所以宜用Byte型变量。(2)
Month函数用于计算日期值的月份。由于Date表示当前系统日期,所以Month(Date)的计算结果是本月月份。(3)由于要创建等于整月天数的工作表,而工作簿中已经在若干个工作表,可能1个也可能3个,所以本例采用的办法是整月的天数减去现有的工作表数量(WorkSheets.Count)。Worksheets.Add方法表示创建工作表,其语法如下:Worksheets.Add(Before,