Vba 通过从单元格值循环添加多页标题

Vba 通过从单元格值循环添加多页标题,vba,excel,userform,multipage,do-loops,Vba,Excel,Userform,Multipage,Do Loops,我想通过循环一些单元格值来生成userform多页页面的标题,但不幸的是,初始化userform时出现了一个错误 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

我想通过循环一些单元格值来生成userform多页页面的标题,但不幸的是,初始化userform时出现了一个错误

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

作为评论的后续,这一条有效:

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更改为Integer
,将
Dim pagecount更改为Long
(因为Integer的最大值仅为
32768
)。例如,它不太可能有超过32768个页面,但一般来说,在确定最后一行时使用
Long
是一个很好的做法。

我得到一个错误
-什么错误?排什么队?不排。这是一个运行时错误“5”无效的过程调用或参数“”。谢谢这是因为页数和
pagecount
不匹配。也许你需要这样的东西:
If n>=.Pages.Count Then.Pages.Add
就在
Do
行之后?哦,好吧,多亏了simoco,我找到了解决方案(需要在标题之前添加一个页面):使用MultiPage1 Do.Pages.Add.caption=Sheets(“设置”).Range(“B”&name).Value n=n+1 name=name+1循环直到n=pagecount结束,这毕竟是一个相当愚蠢的问题。