'entwickelt von Winfried Radner 'e-mail: Wolf.W.Radzinski@onlinehome.de 'Benutzung frei - ohne Gewähr Ein Makro zur Eingabe von Ziffernfolgen KONSTANTER Länge OHNE die ENTER-Taste zu betätigen! Das Makro füllt wahlweise das gesamte Arbeitsblatt ab der augenblicklichen Position der aktiven Zelle ODER einen vor dem Aufruf selektierten Zellbereich. Die Zellen werden SPALTENWEISE nacheinander gefüllt! Die Eingabewerte werden den Zellen als LONG übergeben. (d.h. führende Nullen gehen verloren) Die Länge des Eingabestrings kann gewählt werden. Sowohl die Stringlänge als auch der "Arbeitsbereich" der Prozedur können vor dem "Aufruf" bestimmt werden (*) oder während der Ausführung in der Userform gesetzt werden. über userform1.caption ="Überschrift" userform1.ob_blatt= true 'Arbeitsbereich ist das ganze Blatt userform1.ob_selection= true 'Arbeitsbereich ist ein zuvor selektierter Zellbereich userform1.str_laenge=1 'es werden nur Ziffernstrings der Länge 1 erwartet bzw. die entsprechenden OptionButtons und Textfelder in der Userform '+ (*) Bsp Makro für den Userformaufruf: '+ Sub uf() '+ UserForm1.Caption = "UF" '+ ...nur der selektierte Bereich wird gefüllt '+ UserForm1.ob_Selection = true '+ ...es werden ZIFFERNstrings der Länge 4 erwartet '+ UserForm1.str_laenge = 4 '+ ...öffne die Userform '+ UserForm1.Show '+ End Sub ein XLS-Beispiel gibt's unter http://www.rendar.de/excel/ und zwar dort die Datei "crazybuttons.xls" die VBA Codedateien gibt's unter http://www.rendar.de/ im Ordner /excel/crazybuttons/ die Dateien... "modul1.bas" enthält nur die Makros zum Aufruf der Userform "userform1.frm" und "userform1.frx" enthält die Userform inkl. Code "crazybuttons.txt" diese Textdatei #### ERWEITERUNG (VERSION 2) ##### UNTER >>> /excel/crazybuttons/v2/ gibts die .FRM und FRX in VERSION 2 dort habe ich noch zusätzlich ein Feld >>> userform1.formelstring <<< hinzugefügt, damit ist z.B. folgendes möglich '+ Sub uf_datum() '+ UserForm1.Caption = "Datum_ttmm" '+ UserForm1.ob_Selection = true '+ ...es werden ZIFFERNstrings der Länge 4 erwartet ttmm '+ UserForm1.str_laenge = 4 '+ Userform1.formelstring = "=Datum(2001;Rechts(""x"";2);Links(""x"";2))" '+ UserForm1.Show '+ End Sub Wird dieses Makro gestartet, wird die Userform geöffnet und beginnend mit der aktiven Zelle im gesamten selektierten Zellbereich jeweils eine Folge von 4 Ziffern in ein Datum des Jahres 2001 umgewandelt, in die aktive Zelle eingetragen und der Cursor danach eine Zelle weitergesetzt. Die Enter-Taste dient zur einfachen Wiederholung der letzten Eingabe. Mit ESC kann die Userform geschlossen und das Makro beendet werden! ### AddIn #### UNTER >>> /excel/crazybuttons/v2/cb2.xla gibt's das ganze jetzt auch als AddIn aus dem eigenen Workbook heraus aufrufen kann man das Teil mit Application.Run "cb2.xla!uf", Arg1,Arg2,Arg3,Arg4 wobei Arg1: Titel der Userform als STRING Arg2: True für ganzes Arbeitsblatt als Arbeitsbereich False wenn Prozedur nur in Selection(*) gültig sein soll (*) vor dem Aufruf ausgewählt! Arg3: Integerwert für die KONSTANTE Eingabestringlänge 1<=Arg3<=9 Arg4: Formel f(x) als String Bsp: "=x^2" das Quadrat des in die Userform eingegebene Ziffernstrings wird in die Zelle des Arbeitsblattes eingetragen und der Cursor eine Zelle weiter nach unten gesetzt