【问题标题】:Add multipage caption by looping from cell values通过从单元格值循环添加多页标题
【发布时间】:2014-04-14 15:14:53
【问题描述】:

我想通过循环遍历一些单元格值来为用户表单多页的页面生成标题,但不幸的是,当用户表单初始化时出现错误。

Private Sub UserForm_Initialize()

Dim pagecount As Integer
Dim n As Integer
Dim name As Integer

pagecount = Sheets("SETUP").Range("B" & rows.Count).End(xlUp).Row - 5
n = 0
name = 6

With MultiPage1
Do
.Pages(n).Caption = Sheets("SETUP").Range("B" & name).Value
n = n + 1
name = name + 1
Loop Until n = pagecount
End With

End Sub

【问题讨论】:

  • i get an error - 什么错误?在哪一行?
  • 没有一行。这是运行时错误“5”。 '无效的过程调用或参数'。谢谢!
  • 这是因为页数和pagecount 不匹配。也许你需要这样的东西:If n>=.Pages.Count Then .Pages.Add 就在Do 行之后?
  • 哦,好的,感谢 simoco,我找到了解决方案(需要在标题之前添加一个页面。):使用 MultiPage1 Do .Pages.Add.Caption = Sheets("SETUP").Range( "B" & name).Value n = n + 1 name = name + 1 Loop Until n = pagecount End With 毕竟这是一个非常愚蠢的问题。

标签: vba excel userform multipage do-loops


【解决方案1】:

作为 cmets 的后续,这个可行:

Private Sub UserForm_Initialize()
    Dim pagecount As Long
    Dim n As Long

    pagecount = Sheets("SETUP").Range("B" & Rows.Count).End(xlUp).Row - 5
    n = 0

    With MultiPage1
        Do
            If n >= .Pages.Count Then .Pages.Add
            .Pages(n).Caption = Sheets("SETUP").Range("B" & n + 6).Value
            n = n + 1
        Loop Until n = pagecount
    End With
End Sub

另外请注意,我已将Dim pagecount As Integer 更改为Dim pagecount As Long(因为整数的最大值仅为32768)。对于您的示例,它不可能有超过 32768 的页面,但通常在确定最后一行时使用 Long 是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多