Beschriftungs- und Eingabefelder optimieren

Beschriftungs- und Eingabefelder werden in Word-Formularen oft nicht kreativ genug benutzt.

Von: Lorenz Hölscher
Stand: 12. April 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Drag'n'Drop

Drag'n'Drop

Textboxen gehören zu den wenigen Kontroll-Elementen, bei denen Drag'n'Drop, also Ziehen und Fallenlassen, einfach programmiert werden kann.

Wenn es nur zwischen zwei Textboxen stattfinden soll, reicht es, die Eigenschaft DragBehaviour = fmDragBehaviorEnabled einzustellen, wie im folgenden Bild und Listing zu sehen ist.

Bild vergrößernDrag'n'Drop zwischen zwei Textfeldern

Diese Eigenschaft ist nicht zur Entwurfszeit änderbar und muss daher per Code in UserForm_Initialize eingestellt werden.

Private Sub UserForm_Initialize()
	Me.TextBox1.DragBehavior = fmDragBehaviorEnabled
	Me.TextBox2.DragBehavior = fmDragBehaviorEnabled
End Sub

Die Änderungen des Mauszeigers und das komplette Verhalten erfolgen dabei automatisch, es braucht also keine weitere Programmierung. Das ist doch mal schön einfach, oder?

Textbox und Listbox einsetzen

Der Aufwand ist nur geringfügig höher, um aus einem Textfeld Teile in eine Listbox zu ziehen. Diese kennt zwar die notwendigen Eigenschaften nicht, lässt sich aber recht einfach austricksen, wie das folgende Listing zeigt.

Private Sub ListBox1_BeforeDragOver(ByVal Cancel As _
	MSForms.ReturnBoolean, _ByVal Data As MSForms.DataObject, _
	ByVal X As Single, ByVal Y As Single, _
	ByVal DragState As MSForms.fmDragState, ByVal Effect As _
	MSForms.ReturnEffect, _ByVal Shift As Integer)
	
	Cancel = True
End Sub

Private Sub ListBox1_BeforeDropOrPaste(ByVal Cancel As _
	MSForms.ReturnBoolean, _ByVal Action As MSForms.fmAction, _
	ByVal Data As MSForms.DataObject, _
	ByVal X As Single, ByVal Y As Single, ByVal Effect As _
	MSForms.ReturnEffect, _ByVal Shift As Integer)

	Me.ListBox1.AddItem Data.GetText
End Sub

Private Sub UserForm_Initialize()
	With Me.ListBox1
		.AddItem "rot"
		.AddItem "gelb"
		.AddItem "grün"
	End With
	Me.TextBox1.DragBehavior = fmDragBehaviorEnabled
End Sub

Dabei wird im ListBox1_BeforeDragOver-Ereignis einfach der Parameter Cancel = True eingestellt.

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein