Динамически создаваемая метка не отображается в пользовательской форме VBA - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть пользовательская форма, где у меня есть командная кнопка для просмотра отчетов (может быть любой файл в папке). Если в этой папке n файлов, то при событии щелчка на командной кнопке в пользовательской форме необходимо динамически создавать метки 'n' с именами файлов, отображаемыми в заголовке. Приведенный ниже код выполняется без ошибок, но метки не отображаются в пользовательской форме.

Private Sub cmdViewReports_Click()

    Dim row_num As Long
    Dim fso As Object
    Dim src_path As String
    Dim dest_path As String
    Dim sub_folder As String
    Dim theLabel1 As msforms.Label
    Dim inc As Integer
    Dim my_files As Object
    Dim my_folder As Object
    Dim i As Integer
    Dim ctrl As Control

    'Check if the record is selected in listbox
    If Selected_List = 0 Then   

        MsgBox "No record is selected.", vbOKOnly + vbInformation, "Upload Results"

        Exit Sub

    End If

    'Folder Name to be created as per the 3rd column value in the list 
    sub_folder = Me.lstDb.List(Me.lstDb.ListIndex, 3)

    sub_folder = Replace(sub_folder, "/", "_")

    dest_path = "C:\abc\xyz\Desktop\FV\" & sub_folder & "\"

    Set fso = CreateObject("scripting.filesystemobject")

    If Not fso.FolderExists(dest_path) Then

        MsgBox "No reports are loaded"

        Exit Sub

    End If

    Set my_folder = fso.GetFolder(dest_path)
    Set my_files = my_folder.Files

    i = 1

    For Each oFiles In my_files
        Set theLabel1 = Me.Controls.Add("Forms.Label.1", "File_name" & i, True)
                    With theLabel1
                        .Caption = oFiles.Name
                        .Left = 1038
                        .Width = 60
                        .Height = 12
                        .Top = 324 + inc
                        .TextAlign = 1
                        .BackColor = &HC0FFFF
                        .BackStyle = 0
                        .BorderStyle = 1
                        .BorderStyle = 0
                        '.Locked = True
                        .ForeColor = &H8000000D
                        .Font.Size = 9
                        .Font.Underline = True
                        .Visible = True
                    End With
                    MsgBox "Label" & i & " Created"
                inc = inc + 12
                i = i + 1

    Next   
End Sub

Но при запуске я не вижу метки. В этом случае у меня есть 3 файла в папке, поэтому у меня должно быть 3 ярлыка.

Кроме того, я хочу, чтобы надписи были гиперссылки, а это означает, что после нажатия на ярлык должен отображаться отчет / файлы.

Любая помощь будет высоко оценена. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...