2016-06-09 10 views
0

Ich versuche, ein Add-on für Excel zu ändern, die Daten aus jeder Zelle des Arbeitsblatts nimmt und es in Textfelder einfügt, wo die Informationen leichter gelesen und geändert werden können.Wie Textfeld Steuerelement in VBA veränderbar

Da einige Zellen sehr viel Text enthalten (und die Textfelder sind standardmäßig nur groß genug für eine Zeile), versuche ich, die Textfelder anpassbar zu machen, damit der Benutzer den gesamten Text sehen kann die Zelle.

Der Link unten ist ein Bild, so dass Sie genau wissen, was ich meine:

http://www.jibberjobber.com/blog/wp-content/chrome_resize_text_boxes.png

Bitte haben Sie Verständnis, dass ich nicht die Form einfach auf eine bestimmte Größe vergrößert werden wollen, tun, wie das ist, leicht zu erreichen, aber ich würde es dem Benutzer lieber erlauben, die Größe zu wählen, die am besten zu der Menge an Text, Größe und Schriftart passt.

Vielen Dank im Voraus für Ihre Antworten!

+0

Sie können das nicht haben, ohne die Kanten des Textfelds zu verankern und die Größe * form * ändern Sie die Box in. VBA-Steuerelemente sind nicht Web-UI-Steuerelemente. –

+0

Das Formular ist in der Größe veränderbar. Meinst du, dass ich die Größe der Textfelder nur ändern kann, indem ich die Größe des gesamten Formulars verändere? –

+1

Ja. Naja, per Drag-and-Drop-Aktion des Users jedenfalls, soweit ich weiß. Du könntest irgendwo eine kleine +/- Taste haben, um die Höhe der Textbox programmatisch zu erhöhen/verringern, aber das würde schnell und unvermeidlich zu einem Layout-Albtraum-IMO werden. –

Antwort

1

Ein anderer Ansatz. Ändern Sie in der Laufzeit die Textboxeinstellungen. In diesem Fall

Private Sub TextBox2_Enter() 
    showTextbox2Text 
End Sub 

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    returnOriginalTextbox2Text 
End Sub 

Sub showTextbox2Text() 
    TextBox3.Visible = False 
    TextBox2.MultiLine = True 
    TextBox2.Height = 75 'make some calculation to adapt to your with and text in textbox 
End Sub 

Sub returnOriginalTextbox2Text() 
    TextBox3.Visible = Visible 'original setting 
    TextBox2.MultiLine = False 'original setting 
    TextBox2.Height = 25 'original setting 
End Sub 

Vor eingeben TextBox2 Before enter TextBox2

Nach TextBox2 geben ... in Ausgang zurück zum ursprünglichen Enter TextBox2

0

Sie möchten, dass der Benutzer die Informationen besser sieht und bearbeitet? Sie könnten einen Trick machen ... das ist ein neues Formular mit den Informationen in der ursprünglichen Textbox jetzt in einem größeren Textfeld öffnen. Dieses Formular könnte generisch sein, um in allen Textfeldern verwendet zu werden und könnte über eine Schaltfläche aufgerufen werden.

OriginalForm EditForm

+0

Interessante Idee. Aber wie kann ich diese Textbox an den Text anpassen, den ich verwende? –

0

nach Ihrer Original Frage, das heißt:

"... ich würde es vorziehen, den Benutzer zu ermöglichen, die Größe zu wählen, die die Menge an Text, Größe am besten paßt, und Schrift "

Sie den folgenden Code in Ihrer Userform Codebereich platzieren können:

Option Explicit 

Private mouseLeft As Single, mouseTop As Single 

Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '<~~ change "TextBox1" to whatever the actual name of your textbox 
    If Button = 1 Then 
     mouseLeft = X 
     mouseTop = Y 
    End If 
End Sub 

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '<~~ change "TextBox1" to whatever the actual name of your textbox 
    If Button = 1 Then 
     With Me.TextBox1 '<~~ change "TextBox1" to whatever the actual name of your textbox 
      .Width = .Width + X - mouseLeft 
      .Height = .Height + Y - mouseTop 
     End With 
     mouseLeft = X 
     mouseTop = Y 
    End If 
End Sub 

und der Nutzer kann Textfeldgrenzen zu gewünschten Größen ziehen

Verwandte Themen