Hallo zusammen, ich habe bei Excel ein Formular erstellt bei der man entweder eine US Bank mit ABA routing usw oder eine "EURO" Bank mit IBAN ausfüllen soll?

... komplette Frage anzeigen

2 Antworten

Also das kannst du wie folgt machen:

Da du schon zwei Optionsbutton hast, verlinkst du diese Button über Eigenschaften im Reiter Entwicklertools mit zb. Zelle A1 oder irgendeine leere Zelle (Dort kannst du später die Schriftfarbe Weiß nehmen).

Die Zellen für die Eingabe der IBAN und SWIFT markieren und den Namen International geben und die Zellen für Account NO und ABA und Routing den Namen Domestic.

Jetzt gehst du unten auf den Reiter deiner Tabelle (zb. Tabelle1) und da mit der rechten Maustaste auf Code anzeigen.

Nun bist du im VBA Modus diner Tabelle, dort gibst du folgenden Code ein:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value = 1 Then
If Not Intersect(Target, Range("International")) Is Nothing Then Range("International").Offset(, -1).Cells(1).Select
End If
If Range("A1").Value = 2 Then
If Not Intersect(Target, Range("Domestic")) Is Nothing Then Range("Domestic").Offset(, -1).Cells(1).Select
End If
End Sub

Das ganze noch als xlsm Datei (Excel Arbeitsmappe mit Makros) abspeichern.

Hier wird jetzt die verlinkte Zelle A1 überwacht, sobald sich die Zahl darin ändert (Das passiert automatisch durch die Optionsbutton) werden die dazugehörigen Felder freigegeben. Die anderen sind gesperrt.

Eventuell musst du das International und Domestic im Code tauschen und die Zelle A1 nach deinen wünschen anpassen.

Kommst du so mit meiner Beschreibung klar?

Hier mal ein Muster

http://workupload.com/file/q7GkN4S

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PWolff
07.11.2016, 12:10

Es gibt auch eine Alternative ohne Makros, wenn man erlauben kann, dass in den "falschen" Zellen noch was stehen bleibt, wenn man die Auswahl zwischen "Domestic" und "International" wechselt.

(Könnte sein, dass Datengültigkeiten bei neueren Excel-Versionen auch nachträglich durchgesetzt werden können, aber ich habe hier nur eine alte Version.)

Hier eine Beispieldatei: http://workupload.com/file/qrmzEB8

Schau dir besonders die Bereiche A1 und D3:D7 an, und hier die Gültigkeitsprüfungen der Daten und die bedingten Formatierungen.

1

Ich nehme an, es geht um eine normale Tabelle, keine Userform.

Dort kann man Optionbuttons als Formularsteuerfeld oder ActiveX Element verwenden. Für ActiveX habe ich gerade keine makrofreie Lösung im Kopf.

Beim Formularsteuerfeld (der Button heißt eingefügt dann "Optionsfeld1") kann man Steuerelement formatieren eine Zelle zuweisen. Dort ist dann die aktuelle Auswahl als 1 oder 2 hinterlegt.

Damit kann man über die Datengültigkeitsprüfung arbeiten. Wenn man international auswählt, steht bspw. in Z1 eine 2 (2. Option ausgewählt).

Die SWIFT/ABA/Routing bekommen dann eine Datengültigkeitsprüfung Textlänge mit Minimum = 0 und Maximum =(Z1-1)*22

Wenn in Z1 eine 1 steht (d.h. domestic ausgewählt) ist die maximale Länge damit 0

Für IBAN/BIC geht es auch über Textlänge:
Minimum = 0, Maximum = (2-Z1)*22

Das Minimum bzw. die maximale Länge mit 22 kannst Du natürlich noch anpassen, um tatsächlich eine fachliche Plausibilität abzufragen.

Lücke allerdings bei der Datengültigkeitsprüfung: Wenn man domestic auswählt und eine IBAN erfasst, danach auf international wechselt, wird die IBAN deshalb nicht gelöscht oder angemeckert.

Das müsstest Du über Makros abfragen oder über eine Formel, die einfach einen Hinweistext anzeigt. Neben / Über / Sonstwo bei IBAN/BIC
=wenn(Z1=1;"";"Keine IBAN/BIC bei internationalen Überweisungen")
entsprechend für den anderen Fall eben mit Z1=2

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Ninombre
07.11.2016, 09:44

wie immer kommen die besseren Ideen nach dem Abschicken.

Verfahren bleibt wie gehabt, Option button mit einer Zelle verbinden, Datengültigkeitsprüfung nutzen. Dort allerdings besser benutzerdefiniert nehmen, dann kann man mit Formeln noch weitere Aspekte prüfen. D9 ist bei meinem Beispiel die IBAN, D10 SWIFT

=UND(LÄNGE(D9)=(2-Z1)*22;LINKS(D9;2)="DE";ISTZAHL(RECHTS(D9;20)*1);D10="")

Muss fachlich nicht unbedingt sinnvoll sein, aber links(D9;2)="DE" wäre bspw. die Überprüfung, dass nur deutsche IBAN erfasst werden können, das Feld genau 22 Stellen hat, die letzten 20 Stellen nummerisch sind und das Feld SWIFT leer sein muss. Da kann man sich recht frei austoben

Vielleicht erklärungsbedürftig: Wenn man mit rechts/links Teile einer Zelle betrachtet wird das standardmäßig als Text interpretiert. Durch das *1 akzeptiert Excel das wieder als Zahl

2

Was möchtest Du wissen?