Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Dynamisch verstellbare Userform - Funktionalitätserweiterung
#1
Hallo liebe Leute,

anbei habe ich eine in der Größe dynamisch ferstellbare Userform. Was ich bräuchte wäre eine
Funktionalitätserweiterung in der Form, dass sich die in der Userform befindende Textbox ebenfalls
dynamisch mit verändert. Vielen Dank für eure Hilfe.

Code:
Option Explicit

Private Const MResizer = "ResizeGrab"
Private WithEvents m_objResizer As MSForms.Label
Private m_sngLeftResizePos As Single
Private m_sngTopResizePos As Single
Private m_blnResizing As Single

Private Sub m_AddResizer()
    Set m_objResizer = Me.Controls.Add("Forms.label.1", MResizer, True)
    With m_objResizer
        With .Font
            .Name = "Marlett"
            .Charset = 2
            .Size = 14
            .Bold = True
        End With
        .BackStyle = fmBackStyleTransparent
        .AutoSize = True
        .BorderStyle = fmBorderStyleNone
        .Caption = "o"
        .MousePointer = fmMousePointerSizeNWSE
        .ForeColor = RGB(100, 100, 100)
        .ZOrder
        .Top = Me.InsideHeight - .Height
        .Left = Me.InsideWidth - .Width
    End With
End Sub
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub m_objResizer_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    If Button = 1 Then
        m_sngLeftResizePos = X
        m_sngTopResizePos = Y
        m_blnResizing = True
    End If
    
End Sub
Private Sub m_objResizer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    If Button = 1 Then
        With m_objResizer
            .Move .Left + X - m_sngLeftResizePos, .Top + Y - m_sngTopResizePos
            Me.Width = Me.Width + X - m_sngLeftResizePos
            Me.Height = Me.Height + Y - m_sngTopResizePos
            .Left = Me.InsideWidth - .Width
            .Top = Me.InsideHeight - .Height
        End With
    End If
    
End Sub
Private Sub m_objResizer_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 1 Then
        m_blnResizing = False
    End If
End Sub
Private Sub UserForm_Initialize()

    m_AddResizer
    
End Sub
Private Sub UserForm_Terminate()

    Me.Controls.Remove MResizer
    
End Sub
Private Sub UserForm_Click()

End Sub

Code-Tags korrigiert
Moderator
?mage


Angehängte Dateien
.xls   Dynamisch verstellbare Userform.xls (Größe: 37 KB / Downloads: 4)
to top
#2
Hallo

 photo Raute_zps3ee56209.jpg

man liest sich 21
?mage
to top
#3
Hallo Kathrin,

hier erst mal ein Ansatz:

Code:
Me.Width = Me.Width + X - m_sngLeftResizePos
            Me.TextBox1.Width = Me.TextBox1.Width + X - m_sngLeftResizePos
            Me.Height = Me.Height + Y - m_sngTopResizePos
            Me.TextBox1.Height = Me.TextBox1.Height + Y - m_sngTopResizePos

Allerdings hat das einen bis zwei Excel-Haken Undecided.

Zum einen wird das Textfeld eventuell zu schnell klein. Da könnte man mit einem Faktor gegensteuern, z.B.
=...+ (X - m_sngLeftResizePos) * 0.7.
Besser wäre wohl, das in Abhängigkeit der Maße der Userform zu regeln, also
=Me.Width * 0.5.

Zum anderen kommt von Excel ein Fehler, wenn die Höhe zu gering wird - und wenn Du nur bei der Höhe mit einem Mindestwert gegensteuerst, kommt vielleicht irgendwann ein Fehler bei der Breite.

Du musst also einen Kleinstwert festlegen, z.B.
=...Worksheetfunction.Max(Me.TextBox1.Height + Y - m_sngTopResizePos, Kleinswert).
Kleinstwert dann durch eine entsprechende Zahl ersetzen.

Hier der code mit den Hinweisen:

Code:
Me.Width = Me.Width + X - m_sngLeftResizePos
            Me.TextBox1.Width = WorksheetFunction.Max(Me.Width * 0.5, 20)
            Me.Height = Me.Height + Y - m_sngTopResizePos
            Me.TextBox1.Height = WorksheetFunction.Max(Me.Height * 0.2, 10)

Die zahlen müsstest Du dann so anpassen, wie Du es brauchst.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#4
Hallo wergibtmirRat

gerne baue ich den Code wie gewünscht ein. Aber ich habe den Knopf mit der Raute gedrückt.
Was noch oder besser wie geht's genau?!
to top
#5
(22.08.2014, 19:00)kathrin-Flint schrieb: Hallo wergibtmirRat

gerne baue ich den Code wie gewünscht ein. Aber ich habe den Knopf mit der Raute gedrückt.
Was noch oder besser wie geht's genau?!

Hey, schreibe einfach von Hand [_code_] und [_/code_] (ohne Unterstriche) genauso wie das Big Letter [b] ...
oder du hast nach einfügen des Codeteiles den oberen Code nicht gedrückt zum schliessen.

21
?mage
to top
#6
Hallo Kathrin,

ich hoffe, Du hast auch meine Antwort zum Problem gesehen - wir haben uns ja mit dem Schreiben ziemlich überschnitten 17

Variante 1
Wenn Du code einfügst, dann drücke vor dem Einfügen auf die Raute, dann fügst Du ein, und dann musst Du nochmal auf die Raute drücken.

Variante 2
Du fügst code ein. Anschließend markierst Du den ganzen code und drückst die Raute

Wenn Du mehrere codes hast und dazwischen Text, dann nimmst Du die "Raute" für jeden codeteil.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#7
Danke Leute ich werde mich demnächst dran halten!
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Zelleninhalte nicht dynamisch Butterbrot23 2 69 17.11.2016, 09:02
Letzter Beitrag: schauan
  Dynamisch Werte von einem anderen Blatt lesen Rapt0r 5 87 26.10.2016, 18:56
Letzter Beitrag: Rapt0r
  Dynamisches Diagramm und Tabellen logisch/dynamisch miteinander verknüpfen P.S.Nelke 3 272 29.08.2016, 07:47
Letzter Beitrag: P.S.Nelke
  Dynamisch erstellte UserForm1 wird nicht sofort angezeigt VBATartar 3 236 07.08.2016, 18:59
Letzter Beitrag: Kuwer
  Schaltfläche dynamisch wieder löschen - Objektorientierte Programmierung VBATartar 12 654 26.07.2016, 18:38
Letzter Beitrag: VBATartar
  Liste und Diagramm (dynamisch) für Auftragseingänge Jastar 5 433 05.07.2016, 05:21
Letzter Beitrag: Rabe
  Bereichsname dynamisch erstellen YvonneW 8 773 04.04.2016, 14:41
Letzter Beitrag: YvonneW
  Bausparformeln Dynamisch christol 1 332 27.03.2016, 10:36
Letzter Beitrag: schauan
  Verknüpfung zu anderer Excel Datei Dynamisch erstellen Daniel Albert 6 1.105 20.01.2016, 20:03
Letzter Beitrag: Daniel Albert
  Excel-File mit VBA dynamisch formatieren mad1111111 9 1.694 06.01.2016, 10:31
Letzter Beitrag: WillWissen

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste