Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
144to148
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
144to148
144to148
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA- Code kopieren

VBA- Code kopieren
02.08.2002 20:50:03
Ernst Dunkel
Hallo Forum
Ich habe folgendes Problem:
In der UserForm1 befinden sich eine Anzahl TextBoxen mit gleicher Prozedur. Wenn sie nur ein paar Mal vor kommen, so kopiere ich diese.
Wie müsste ich die untenstehende Prozedur abändern, wenn ich 50 TextBoxen hätte?

Private Sub TextBox1_KeyPress(ByVal KeyAscii As _ msforms.returninteger)
Select Case KeyAscii
Case 48 To 57
Case Else: KeyAscii = 0
End Select
End Sub

Ich hatte schon mal diese Frage gestellt, kam jedoch mit dem Lösungsvorschlag nicht weiter!

Wer kann mir die Lösung nochmals geben?

Gruss Ernst

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA- Code kopieren
03.08.2002 01:44:21
Nike
Hi,
reduziere den Inhalt der Funktionen auf ein Minimum,
lagere sie am besten aus, da du für alle Textboxen
das Ereignis abfangen mußt...
Das Ergebnis könnte so ähnlich aussehen:

Alle Textboxen rufen die ausgelagerte Logik in der
selbstgebauten Funktion AsciCheck auf, so hast du für
jede Textboxfunktion nur einen Dreizeiler...

Bye

Nike

Re: mache was falsch!
03.08.2002 08:41:19
Ernst Dunkel
Guten Tag Nike
Vilen Dank für Deine Bemühungen.

Ich habe folgendes gemacht:
Unter UserForm1 habe ich Deine Code (Private Sub bis End Function) hinein kopiert und mit F5 gestartet, dabei kommt die Meldung “Fehler beim Kompilieren: Argumenttyp ByRef unverträglich“. Das mit dem auslagern verstehe ich nicht!

Die nächste Frage ist, wie würdest Du die drei Zeilen zum Beispiel 50 mal per Makro einfügen, zugleich sollen die TextBoxen autom. nummeriert werden?
Könntest Du mir noch ein wenig weiter helfen?

Gruss Ernst

Anzeige
Re: mache was falsch!
03.08.2002 12:45:48
Charlie
Hallo, Ernst!

Nike hat den Code aus Deinem Sub-Beispiel in die Function gepackt, aber übersehen, dass er der Function die Variable intAsci übergibt, die Function aber KeyAscii verwendet. Außerdem müsste in der Function nach der Zeile Case 48 To 57 noch eingefügt werden, dass in diesem Fall die Function den eingegebenen Wert zurückgibt, sonst passiert nämlich gar nix.

Ganz unten findest Du noch einen Vorschlag von mir, wie es am Einfachsten und auch am Kürzesten geh:

Viel Erfolg,
Charlie

Re: es funktioniert
03.08.2002 13:52:58
Ernst Dunkel
Hallo Chrlie

Viele Dank für Dein Beitrag. Beide Lösungen funktionieren bestens. Lösungsvorschlag TextBox4 werde ich übernehmen, ist wirklich einfacher!

Gruss Ernst

Anzeige
Re: mache was falsch!
04.08.2002 16:55:09
Nike
Hi Charlie
danke für deine Korrektur,
um die Zeit war ich wohl nicht mehr so frisch ;-)

Mir ging es eigentlich in der Hauptsache darum die
Prüffunktionalität aus den jeweiligen Codeblöcken der
Textboxen herauszunehmen und in eine eigene Funktion
auszulagern. So kann man sie dann von einer beliebigen
Textbox aus ansprechen.
Meist sind solche Prüfungen ja etwas komplizierter
und dann lassen sie sich nicht so einfach mit nem
Einzeiler abdecken, in dem Fall ist dann eine Auslagerung
der Logik wohl zu empfehlen...

Der Vergleich mit dem Like Operator hab ich auch noch nicht
so häufig gesehen - wieder was dazugelernt - danke Dir dafür.

Bye

Nike

P.S. Hab in nem anderen Thread gelesen, das Du in Wien sitzt,
vielleicht triffst du dich ja mal mit Alf (einem anderen
Forenteilnehmer aus Wien, der auch immer mal wieder vorbeischneit...)

Anzeige
Nicht böse sein...
04.08.2002 17:21:13
Charlie
Hallo, Nike!

Mir war Deine Absicht schon klar und sind auch Deine guten Excel-(VBA-)Kenntnisse bekannt. Ich hoffe, Du fühlst Dich durch mein Einmischen in den Thread nicht auf den Schlips getreten und auch nicht kritisiert. Das war mit Sicherheit nicht meine Absicht, aber man muss vorsichtig sein, weil der eine oder andere (zu) schnell etwas in die falsche Kehle bekommt.

Ich wollte Ernst nur auf die Fehlerursache hinweisen und ihm nicht kommentarlos eine funktionierende Änderung posten.

Das Auslagern der Prüffunktion - wie von Dir vorgeschlagen - hat genüber meinem Lösungsvorschlag auch den Vorteil, dass notwendige Änderungen nur 1x gemacht werden müssen. Soll auch nur 1 Zeichen zusätzlich zugelassen werden, müsste das bei meiner Variante aber für jede TextBox gemacht werden. In der Kürze liegt nicht immer die Würze. Da bekanntlich alle Wege nach Rom führen, muss jeder für sich selbst eintscheiden, welchen Weg er gehen will.

Nochmal nix für ungut!

Tschüß,
Charlie
P.S.: Der Name "Alf" ist mir aus dem Forum schon bekannt. Es ist alles eine Frage der Zeit und bei 2 Berufen ist der Zeitfaktor oft ein großer Spielverderber. Aber vielleicht klappt es irgend wann einmal.

Anzeige
Re: Nicht böse sein...
04.08.2002 18:51:48
Nike
Hi Charlie,

ne ne, ich bin für Korrekturen nie böse.
Da können alle Beteiligten nur von profitieren ;-)
So ein ausgeprägtes Ego hab ich nicht, das ich
gut gemeinte Ratschläge in den Wind schlage...
Wir sind alle nur Menschen und die machen Fehler.
Wenn es andere gibt, die diese erkennen und auch
noch ne praktikable Lösung bereit halten, um so besser ;-)

Bye

Nike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige