2k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo,

ich habe ein kleines Problem.
Im Moment beschäftige ich mich ein wenig mit VBA und werde damit ein kleines Tool erstellen.
In diesem Tool sollen verschiedene Exceltabellen hinterlegt werden, die daraufhin mit Hilfe von zwei Userforms ausgewählt werden.
Ich mach mal ein einfaches Beispiel:

In der ersten Userform soll ausgewählt werden ob man Bananen, Äpfel oder Erdbeeren essen will. Das habe ich bisher mit 3 verschiedenen Optionsfeldern dargestellt und durch eine Befehlsschaltfläche auf die nächste Userform geleitet. In der nächsten Userform habe ich daraufhin dann die vier Optionsfelder 2, 3, 4 oder mehr als 4 eingefügt. Beim Klicken von den vier Optionsfeldern erscheint dann die gewünschte Exceltabelle. Ich kriege das nur hin, dass ich die Exceltabelle öffne, wenn ich auf eins der Optionsfelder in der 2. Userform drücke. Dabei ist aber dann nicht sicher, was vorher in der 1. Userform geklickt worden ist. Ich möchte gern, dass ich eine Exceltabelle öffne, die ich dann hinterlege, die genau bei Bananen 2 geöffnet wird. Ich habe etwas Erfahrung mit Java, aber weiß nicht wie und ob es möglich ist eine If-Funktion mit zwei verschiedenen Variablen zu schreiben.

Sowas wie: If(Userform1/Optionsbutton_Banane & Userform2/Optionsbutton_2) Then... Worksheets("Banane2").Visible

Versteht ihr was ich meine und könnt ihr mit da weiterhelfen?
Falls ich über das Thema etwas im Forum finden kann (ich hab es bisher nicht gefunden), dann wäre ein Link nicht schlecht!


Mit freundlichen Grüßen

Batonia

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

definiere in einem normalen Modul eine Variable außerhalb eines Moduls (bzw. eine Global-Variable). Dieser kannst du dann in der Userform 1 einen Wert zuweisen und beim Starten der Userform 2 wieder auslesen.

Hier mal ein kleines Beispiel: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hey M.O.,

danke für die schnelle Antwort. Wie ich sehe hast du einfach bei Klicken von Apfel, werden daraufhin in einer neuen Userform die Optionsfelder zu Apfel1 und Apfel2 umbenannt.
Ich hätte mir aber gedacht, dass ich für die Auswahl Banane, Apfel oder Erdbeere die gleichen Optionen habe. Also im zweiten Userform einfach nur 1; 3; oder mehr als 4;
Und die eigentliche Frage wäre ja, wie öffne ich genau die richtige Exceltabelle, wenn Apfel im 1. UF und "mehr als 4" im 2. UF geklickt worden sind.
Bisher kann ich das nur im 2.UF aussuchen (also irgendeine Tabelle öffnen). Meine Absicht ist es aber, dass die Tabelle geöffnet wird, die für genau den Mix aus den Antworten der 1. und 2. UF hinterlegt ist.

Es ist ein bisschen schwierig für mich zu erklären, wie genau mein Problem ist.

Einfach gesagt: Ich klick in der ersten UF Banane an, daraufhin klick ich in der 2. UF "mehr als 4" an und damit öffnet sich die Excel-Tabelle, die genau dafür hinterlegt ist und den Namen "Banane-mehrals4" trägt.

Dafür muss man die Exceltabelle öffnen, wenn genau die eine Option im 1. und eine andere Option im 2. UF angeklickt werden.


Ansonsten schonmal vielen Dank. Ich hab daraus auch schon bisschen was neues gelernt.


Gruß Batonia
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Batonia,

jetzt ist mir klar was du willst. Hier mal eine Beispieldatei auf deine Bedürfnisse angepasst: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hey,
ich find das super, dass du mir so schnell antwortest und versuchst mir mit meinem Problem zu helfen. Aber soweit ich verstehe zeigst du mir nach der 2. Userform einfach was genau ich gewählt habe als String und einem (wie man in Java sagt) System.out.print.

Meine Absicht ist es durch die Verknüpfung von den beiden Auswahlen, die ich getroffen hab das richtige Datenblatt anzuzeigen.
Dafür habe ich erstmal jedes Datenblatt verdeckt. Danach habe ich zwei Userformen erstellt. In der einen Userform frage ich eine grobe Frage: Sowas wie: Aus welcher Stadt kommst du? In der zweiten Userform wird dann abgefragt: Welche Sprache sprichst du?

Durch die beiden Antworten kann ich dann sehen, welches Datenblatt geöffnet werden muss, sodass diese Person das auch versteht und benutzen kann. Also bekommt der, der aus Berlin kommt und Deutsch spricht auch genau diese Tabelle, die er benötigt.

Ich habs versucht mit Äpfel und Bananen zu erklären :D aber das ist viel schwieriger zu erklären.

Also, ich brauch eigentlich nur ein Befehl, wie ich beide Antworten kombinieren kann. Ich versuch schon irgendwie die Global zu deklarieren, damit ich die beiden dann verwende, um das richtige Datenblatt zu öffnen, aber es fällt mir etwas schwer. Hatte bisher nur ein wenig mit Java zu tun und bin auch keine Expertin im Programmieren.


Gruß

Batonia
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich habe dir in der Beispieldatei gezeigt, wie es funktioniert, dass du beide Auswahlen kombinieren kannst ;-). Ob das nun, wie im Beispiel mit einer .xlsx Endung als Datei ausgegeben wird, oder nur als Name eines Tabellenblatts ist egal. Das Prinzip ist immer das Selbe.
Die Verknüpfung findet dadurch statt:
datei = wahl & "_" & wahl2
So entsteht der Name der Tabelle, die du einblenden willst (der Unterstrich ist natürlich nur optional),
Hier noch mal eine neue Beispieldatei: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hey,


Vielen Dank, genau das meinte ich.

Einen schönen Tag noch!


Batonia
...