Adicione legenda de várias páginas fazendo um loop a partir dos valores das células
Pergunta
Gostaria de gerar as legendas para as páginas de um formulário de usuário com várias páginas, percorrendo alguns valores de células, mas infelizmente recebo um erro quando o formulário de usuário é inicializado.
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
Solução
Seguindo os comentários, este funciona:
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
Observe também que eu mudei Dim pagecount As Integer
para Dim pagecount As Long
(porque o valor máximo do número inteiro é apenas 32768
).Para o seu exemplo, é improvável que tenha mais do que 32768
páginas, mas em geral é uma boa prática usar Long
ao determinar a última linha.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow