多页

时间:2017-12-21 05:15:10

标签: vba excel-vba controls userform excel

我有一个带有运行时定义的多页面的用户表单。在启动时,多页面会填充多个页面,每个页面都有自己的文本框。

Example of the multipage defined during runtime.

挑战在于,在运行时,用户可以重新排序,删除,添加和重命名这些页面。最后,我需要调用多页的每个页面中的所有数据,包括文本框。这意味着在Me.Controls中,项目编号无用,因为它们变得混乱。

但是,在多页面的每个页面中还有一组控件,它们只有1个项目(文本框)。这意味着当我在'for'循环中扫描多页时,我总是可以调用第1项,类似于'me'语句。

Item1 within controls of each page of the multipage object.

然而,当我尝试超越第二组控件来调用文本框的值时,代码失败了。

For i = 0 to Last_Page-1
Example_String = Me.My_MultiPage.Pages.Item(i).Controls.Item(1).Value
Next i

为什么我不能调用第二层控件?如果没有这个,我必须编写大量的解决方法来管理每个文本框的名称,因为用户重新订购它们。

提前致谢!

1 个答案:

答案 0 :(得分:0)

集合使用基于0的索引。

For i = 0 to Last_Page-1
    Example_String = Me.My_MultiPage.Pages.Item(i).Controls.Item(0).Value
Next i
不需要

.Item,因为Collection的默认值是其Items。

For i = 0 to Last_Page-1
    Example_String = Me.My_MultiPage.Pages(i).Controls(0).Value
Next i