Größe Userform und Ihrer Steuerelemente mit VBA

Ich versuche, um die Größe einer userform und Ihrer Steuerelemente mit VBA, um die unterschiedliche Größe Monitore. Im folgenden ist der code, den ich verwende, basiert auf Ron DeBruin code (http://www.rondebruin.nl/mac/mac022.htm).

Im wesentlichen der code ist entworfen, um die Skala der userform die Größe und Lage zusammen mit allen seinen Kontrollen.

Das problem ist, ich bin immer ein Fehler (siehe unten) auf die Ausführung

"Run-time error '-2147467259(80004005)': Method 'Properties' of object '_VBComponent' failed"

Ich versucht, anstelle .Properties("Top") mit .Top und ich bekam die Object doesn't support this property or method Fehler.

Herr DeBruin code macht da; aber ich bin ratlos, warum es nicht funktioniert. Jede Hilfe wäre sicher dankbar sein.

Sub ChangeUserFormAndControlsSize()
    Dim AppUserform As Object
    Dim FormControl As Object
    Dim NameUserform As String
    Dim SizeCoefficient As Single

    SizeCoefficient = wsControls.Range("SizeCoefficient")

    NameUserform = "form_APScheduler"

    Set AppUserform = ThisWorkbook.VBProject.VBComponents(NameUserform)
    With AppUserform
        .Properties("Top") = .Properties("Top") * SizeCoefficient   '*** ERROR OCCURS HERE
        .Properties("Left") = .Properties("Left") * SizeCoefficient
        .Properties("Height") = .Properties("Height") * SizeCoefficient
        .Properties("Width") = .Properties("Width") * SizeCoefficient
    End With

    For Each FormControl In AppUserform.Designer.Controls
        With FormControl
            .Top = .Top * SizeCoefficient
            .Left = .Left * SizeCoefficient
            .Width = .Width * SizeCoefficient
            .Height = .Height * SizeCoefficient

            On Error Resume Next
            .Font.Size = .Font.Size * SizeCoefficient
            On Error GoTo 0
        End With
    Next FormControl

End Sub
  • Haben Sie die Option Zugriff auf das VBA-Projekt-Objekt-Modell durch die trust-Center? Dies ist erforderlich, um die Arbeit mit dem Objekt-Modell.
  • Ja, es ist aktiviert. Während ich versuche, Herr DeBruin code zu arbeiten, schließlich will ich in der Lage sein, um eine Schleife durch alle userforms in der Arbeitsmappe, um zu skalieren, Sie alle. Etwas zum Effekt von: Für Jeden AppUserform in der Arbeitsmappe....
  • Ich bin mir nicht sicher, auf das Problem in dem Fall aber wird Sie warnen, dass der Zugriff auf das VBA-Projekt-Objekt-Modell müssen manuell aktiviert werden, auf jedem computer, der die userform verwendet werden.
  • Ich kann laufen, der code ohne Fehler. Wenn Sie eine Pause einstellen Mit AppUserform und legen Sie eine Uhr für AppUserform, was siehst du? Ist das Objekt, OK? Auch ist SizeCoefficient OK an diesem Punkt?
  • Ich eine Uhr auf AppUserform. Was sehe ich? Viele Infos gibt es (verzeih meine Unwissenheit), aber eine Sache, die interessant aussah, war "Name : "form_APScheduler" : String : Module1.ChangeUserFormAndControlsSize". Der name ist korrekt. Ist das Objekt, OK? Ich bin mir nicht sicher, was Sie suchen zu beantworten. Ist SizeCoefficient OK? Ja; die variable immer noch den korrekten Wert (.75 in diesem Fall). Frage: kann man diese anders erfolgen, d.h., ohne Zugriff auf das VBA-Projekt-Objekt-Modell?
InformationsquelleAutor BillD | 2014-07-10
Schreibe einen Kommentar