Results 1 to 1 of 1

Thread: VBA USERFORM NOT LOADING dISPLAYING ERROR MESSAGE

  1. #1
    Junior Member
    Join Date
    Nov 2023
    Posts
    1
    Rep Power
    0

    Post VBA USERFORM NOT LOADING dISPLAYING ERROR MESSAGE

    I am new in learning Userform VBA code, I designed the Userform with ClsTabMenu,Module1 and Usefrom Code but on clicking to load is diplaying

    Run-time error "91"
    Object Variable or With block variable not set

    find attached excel and codes below

    ClsTamenu code
    Private Declare PtrSafe Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Any) As Long
    Private Declare PtrSafe Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long

    'ColorDestaq

    Const ColorDestaq = 16730978

    Public WithEvents mForm As MSForms.UserForm
    Public WithEvents mPage As MSForms.MultiPage

    Public WithEvents TabLabel As MSForms.Label
    Public WithEvents TabIcon As MSForms.Label
    Public WithEvents ActiveTab As MSForms.Label
    Public WithEvents TabLine As MSForms.Label

    Public LabelTop As Integer
    Public LabelLeft As Long
    Public LineLeft As Integer

    Const IDC_HAND As Long = 32649

    Sub MouseMoveIcon()
    Dim hCursor As Long
    hCursor = LoadCursor(0, ByVal IDC_HAND)
    SetCursor hCursor
    End Sub
    Sub CreateTabMenu(form As MSForms.UserForm, muPage As MSForms.MultiPage)
    Dim Ctrl As Control
    Dim mPageName As String
    Dim tempCol As New Collection
    Dim IconCode As String

    Set mForm = form
    Set mPage = muPage

    i = 1
    '//Önce labellar kontrol edilir ve sýrasýna gore collactiona eklenir
    '//First, the labels are checked and added to the collection in order.

    head:
    For Each Ctrl In mForm.Controls
    TagValue = GetValue(Ctrl, 0)
    mPageName = GetValue(Ctrl, 1)
    If TagValue = "TabMenu" And mPageName = mPage.Name Then

    If CInt(GetValue(Ctrl, 2)) = i Then
    tempCol.Add Ctrl
    i = i + 1

    GoTo head:
    End If
    End If
    Next

    '//Form yüksekliðinden tabmenu eleman sayýsý ve aralarýndaki
    '//boþluk kadar çýkarýp ikiye bölerek yukarýdan ve aþaðýdan eþit boþluk býrakýyoruz

    '//Number of tabmenu elements from form height and between them
    '//We remove as much as the space and divide it into two, leaving equal space from above and below.
    LabelTop = (mForm.InsideHeight - ((tempCol.Count + tempCol.Count) * 20)) / 2

    Index = 1

    '//Yukarýda tempcol isimli Koleksiyona eklemiþ olduðumuz elemanlarýn dizaynýný yapýyoruz
    '//We are designing the elements we have added to the Collection named tempcol above.
    For i = 1 To tempCol.Count

    Set Ctrl = tempCol(i)
    LabelDesign Ctrl
    LineLeft = Ctrl.Left + Ctrl.Width + 15

    If GetValue(Ctrl, 2) = 1 Then
    '//Eðer ctrl ilk Tablabel ise activeTab oluþturulur
    '//If ctrl is the first Tablabel, activeTab is created

    Set ActiveTab = mForm.Controls.Add("Forms.Label.1", "ActiveTab")
    With ActiveTab
    .Height = 40
    .Width = 4
    .BackColor = ColorDestaq
    .BackStyle = fmBackStyleOpaque
    .Top = LabelTop - 10
    .Left = LineLeft - 1
    End With

    '//Ayný þekilde birinci elemana göre yan taraftaki çizgi ayarlanýr
    '//In the same way, the line on the side is adjusted according to the first element.
    Set TabLine = mForm.Controls.Add("Forms.Label.1", "TabLine")
    With TabLine
    .BackColor = RGB(212, 212, 212)
    .Width = 1.4
    .Left = LineLeft
    .BackStyle = fmBackStyleOpaque
    .ZOrder 1
    End With
    Ctrl.ForeColor = ColorDestaq
    Ctrl.Font.Name = "Poppins"
    Ctrl.Font.Bold = True

    LabelLeft = Ctrl.Left
    Else

    End If
    Ctrl.Left = LabelLeft

    IconCode = tempCol(i).ControlTipText
    '//Kontrolün ControlTiptex'i dolu ise icon oluþturulur
    '//if the ControlTiptex of the control is full, the icon is created
    If IconCode <> "" Then
    Set TabIcon = mForm.Controls.Add("Forms.Label.1", "TabIcon" & tempCol(i))
    With TabIcon
    .Font.Name = "Segoe MDL2 Assets"
    .Font.Size = 14
    .ForeColor = RGB(51, 51, 51)
    .BackStyle = fmBackStyleTransparent
    .Caption = ChrW("&H" & tempCol(i).ControlTipText)
    .Left = Ctrl.Left - 35
    .Top = LabelTop
    .ZOrder 1
    End With
    End If

    LabelTop = LabelTop + Ctrl.Height + 20

    Set tb = New ClsTabMenu
    Set tb.TabLabel = Ctrl
    Set tb.ActiveTab = ActiveTab
    Set tb.mForm = mForm
    Set tb.mPage = mPage
    tbCol.Add tb

    ' Set TabLabel = Nothing
    Next

    With TabLine
    .Height = LabelTop + 20
    .Top = (mForm.InsideHeight - .Height) / 2
    End With

    '//Multipage stil ayarlarý yaparak her sayfaya transition effect ayarlýyoruz
    '//We set the transition effect on each page by making multipage style settings
    With mPage
    .Style = fmTabStyleNone
    .Top = 0
    .Value = 0
    .Left = TabLine.Left + 8

    For i = 0 To .Pages.Count - 1
    With .Pages(i)
    .TransitionEffect = 7 '2 '3
    .TransitionPeriod = 300
    End With
    Next i

    End With

    End Sub
    Sub LabelDesign(Ctrl As MSForms.Label)
    With Ctrl
    .Font.Name = "Poppins"
    .Font.Bold = True
    .Font.Size = 11
    .ForeColor = vbGrayText
    .Top = LabelTop
    .Width = 110
    .Height = 20
    .Left = .Left + 25
    .Caption = WorksheetFunction.Proper(.Caption)
    .BackStyle = fmBackStyleTransparent
    ' .BorderStyle = fmBorderStyleSingle
    .TextAlign = fmTextAlignLeft

    End With
    End Sub
    Function GetValue(Ctrl As Control, cIndex As Integer)
    On Error Resume Next
    GetValue = Split(Ctrl.Tag, "-")(cIndex)
    End Function

    Private Sub TabLabel_Click()
    Dim mPageName As String
    Dim iTag As Integer
    Dim speed As Integer

    On Error GoTo err:

    '//Label'ýn sýrasý alýnýr
    '//Label's order is taken
    iTag = GetValue(TabLabel, 2) - 1

    '//Hangi multipage için çalýþacaðý alýnýr
    mPageName = GetValue(TabLabel, 1)

    '//Once tum TabLabellar standart hale getirilir
    '//For which multipage it will work
    TabLabelOut TabLabel

    '//aktif olan label iþaretlenir
    '//the active label is marked
    With TabLabel
    .ForeColor = ColorDestaq
    .Font.Name = "Poppins"
    .Font.Bold = True
    End With

    If TabLabel = "Logout" Then Unload mForm

    '//Multipage'in þu anki deðeri ile atanacak deðeri arasýndaki fark alýnýr ve hýz ayarlanýr
    '//The difference between the current value of Multipage and the value to be assigned is taken and the speed is adjusted
    speed = Abs(iTag - mForm.Controls(mPageName).Value)

    With ActiveTab
    Do While .Top < TabLabel.Top - 10
    DoEvents
    .Top = .Top + (0.05 * speed)
    Loop

    Do While .Top > TabLabel.Top - 10
    DoEvents
    .Top = .Top - (0.05 * speed)
    Loop
    End With
    '//Multipage value atanýr
    '//Multipage value is assigned
    mForm.Controls(mPageName).Value = iTag

    err:
    If err.Number = 380 Then
    MsgBox "You need To add a New page"
    End If
    End Sub
    Sub TabLabelOut(Ctrl As MSForms.Label)
    Dim mPageName As String

    '//Formdaki diðer labellarý etkilememesi için sadece MultiPage ismi alýnýr
    '//Only MultiPage name is taken so that it does not affect other labels in the form.
    mPageName = GetValue(Ctrl, 1)

    Dim ctr As Control
    For Each ctr In mForm.Controls

    If TypeName(Ctrl) = "Label" Then
    '//eðer tag'i Multipage name içerirse, standart hale getirilir
    '//if tag contains Multipage name, it is standardized
    If InStr(1, ctr.Tag, mPageName) <> 0 Then
    ctr.ForeColor = vbGrayText
    ctr.Font.Name = "Poppins"
    ctr.Font.Bold = True
    End If
    End If
    Next

    End Sub

    Private Sub TabLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    MouseMoveIcon
    End Sub



    Userform1 Code

    Private Sub UserForm_Initialize()
    ' Ensure the class instance tb is initialized
    Set tb = New ClsTabMenu

    ' Ensure MultiPage1 exists before calling CreateTabMenu
    If Not MultiPage1 Is Nothing Then
    tb.CreateTabMenu Me, MultiPage1
    Else
    MsgBox "MultiPage1 could not be found."
    End If
    End Sub



    Module1 code

    Public tb As New ClsTabMenu
    Public tbCol As New Collection
    Attached Files Attached Files

Similar Threads

  1. Replies: 51
    Last Post: 10-22-2022, 01:47 PM
  2. Displaying dates in reports as MM/DD
    By papabill in forum Access Help
    Replies: 1
    Last Post: 02-26-2015, 06:16 AM
  3. UserForm ComboBox error
    By Jabba89 in forum Excel Help
    Replies: 4
    Last Post: 12-20-2014, 03:54 AM
  4. How To Bypass A Webquery Error Message
    By mrprofit in forum Excel Help
    Replies: 4
    Last Post: 04-17-2014, 06:39 PM
  5. Replies: 8
    Last Post: 05-21-2013, 06:34 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •