VBA UBound(f) 函数

Sub test()

Application.ScreenUpdating = False

Dim f, wb, x

f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)

For x = 1 To UBound(f)

Set wb = Workbooks.Open(f(x))

Next
End Sub
1我不理解当初你写For x = 1 To UBound(f) 是什么意思
2UBOUND(f) 我理解的f 是个变量名称 你给我做的就是F就代表某EXCEL文件 然后是EXCEL的数量的最大数 问题我不知道循环这个又什么用 (我理解对不)

问题一:

f = Application.GetOpenFilename;这句后F是一个一维数组,分别为你选中的文件;


你可以输入代码PRINT F(1)  这个就会显示第一个文件;PRINT (2)  就会显示你选中的第二个文件


 如果我们选中的是2个文件,那么 UBound(f)就为2了。

定义  For x = 1 To UBound(f),是为了后面我要一个个的用WORKBOOKS.OPEN打开这些文件!


就是这句:Set wb = Workbooks.Open(f(x))


问题二:

假设我们都不知道自己选了多少文件,但是F知道。那么F的最大值为多少呢,就为UBound(f),意思就是f这个数组的最大值,还有其它用法,顺便提一下,如下:


'数组是用编号排序的,那么如何获得一个数组的大小呢
 
 'Lbound(数组) 可以获取数组的最小下标(编号)
 'Ubound(数组) 可以获取数组的最大上标(编号)
 'Ubound(数组,1) 可以获得数组的行方面(第1维)最大上标
 'Ubound(数组,2) 可以获得数组的列方向(第2维)的最大上标


我也不知道自己解释清楚没有,不知道你有没有学习过数组,如果还没有学过,可能理解起来有点困难。


还有问题追加就是;

追问

你可以输入代码PRINT F(1) 这个就会显示第一个文件;PRINT (2) 就会显示你选中的第二个文件

如果我们选中的是2个文件,那么 UBound(f)就为2了。
能不能帮我写个语言 让我看看效果 (因为我不会写,脑子一团浆糊)

追答

可以看下附件与GIF,分别演示4个功能:

1、查看我们选了几个文件

2、查看我们选的第一个1文件

3、查看我们选的第二个文件

4、打开第一个文件Workbooks.Open (f(1))



Sub test()
Application.ScreenUpdating = False
Dim f, wb, x
f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)
MsgBox UBound(f) '查看我们选了几个文件
MsgBox f(1) ''查看我们选的第一个1文件
MsgBox f(2) ''查看我们选的第二个文件
Workbooks.Open (f(1))
End Sub


来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-05
GetOpenFilename
可能返回多个文件,

For x = 1 To UBound(f)

这样就是每个都打开追问

运行后出现这个 怎么叫每个都打开   

1我打个多个文件时 用Ctrl的

追答

For x = 1 To UBound(f)

Set wb = Workbooks.Open(f(x)) //打开每一个文件

Next

第2个回答  2020-02-14
学习了,受益匪浅

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网