У меня довольно большая многостраничная пользовательская форма, в которой я хочу внести изменения в некоторые теги. Я написал следующий фрагмент кода только для того, чтобы понять, что он только изменял указанные свойства во время выполнения - тогда как мне нужно, чтобы они постоянно менялись.
Sub ephemeralNameCh()
Dim p As Integer, lenTag As Integer, lastShMulti As Integer
Dim Ctrl As Control
lastShMulti = uf_Screening.MultiPage1.Count - 1 'Last pg in multipage uf
For p = 0 To lastShMulti
For Each Ctrl In uf_Screening.MultiPage1.Pages(p).Controls
'If tags needs to be change, do so
If Ctrl.Tag <> "" And Left(Ctrl.Tag, 3) <> "P10" And Left(Ctrl.Tag, 3) <> "P11" Then
If Left(Ctrl.Tag, 2) <> "P0" Then
lenTag = Len(Ctrl.Tag)
'New tag
Ctrl.Tag = "P0" & Right(Ctrl.Tag, lenTag - 1)
End If
End If
Next Ctrl
Next p
End Sub
Из-за множества похожих вопросов я Я, наверное, должен использовать
With ThisWorkbook.VBProject.VBComponents("uf_Screening").Designer
Но я не смог реализовать его, несмотря на несколько вариантов. Это
Sub permanentNameCh()
Dim p As Integer, lenTag As Integer, lastShMulti As Integer
Dim Ctrl As Control
lastShMulti = uf_Screening.MultiPage1.Count - 1 'Last pg in multipage uf
With ThisWorkbook.VBProject.VBComponents("uf_Screening").Designer
For p = 0 To lastShMulti
For Each Ctrl In uf_Screening.MultiPage1.Pages(p).Controls
'If tags needs to be change, do so
If Ctrl.Tag <> "" And Left(Ctrl.Tag, 3) <> "P10" And Left(Ctrl.Tag, 3) <> "P11" Then
If Left(Ctrl.Tag, 2) <> "P0" Then
lenTag = Len(Ctrl.Tag)
'New tag
.MultiPage1.Pages(p).Controls(Ctrl.Name).Tag = "P0" & Right(Ctrl.Tag, lenTag - 1)
End If
End If
Next Ctrl
Next p
End With
End Sub
приводит к Ошибка выполнения 91: переменная объекта или переменная блока не установлена .
Есть идеи, как заставить эту работу работать?