Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Ausblenden von Comboboxen und Textboxen
#1
Hallo

Ich bin neu hier im Forum und habe sehr wenig Ahnung von VBA.
Habe schon im Netz gesucht nach meinem Problem, doch leider bin ich nicht so richtig fündig geworden.
Ich habe mir eine Userform gebastelt mit Comboboxen und Textboxen.

Wer kann mir helfen wie ich das mache das, wenn ich in Combobox 8 eine entsprechende Zahl auswähle, das mir dann die anderen Boxen ausgeblendet werden??
Beispiel:
A)
Wähle ich in Combobox 8 die 1 aus,
so sollen die Comboboxen 2 bis 7 und auch die Textboxen 2 bis 7 ausgeblendet werden. Drücke ich dann den Commandbutton 1 so soll er das in die entsprechende Spalten einfügen, bei Befüllung.
B)
Wähle ich in Combobox 8 die 2 aus,
so sollen die Combobox 1 , Combobox 3 bis 7 und die Textbox 1, TextBoxen 3 bis 7 ausgeblendet werden. Drücke ich nun wieder den Commandbutton 1 so soll er auch die in die entsprechenden Spalten einfügen, bei Befüllung.
usw.

Ich wäre euch sehr sehr dankbar wenn ihr mir helfen könntet.

Viele Grüße
Maria 6


Angehängte Dateien
.xlsm   UserForm.xlsm (Größe: 21,26 KB / Downloads: 6)
Top
#2
Hallo Maria,

im VBA Editor erzeugst du ein neues Ereignis für ComboBox8 namens Change.
Darin baust du dir dein Select-Case Statement zusammen so wie du es brauchst.

EDIT: Du musst jede Box pro Statement einfügen und sagen ob Sie angezeigt werden soll oder nicht.
Also für Case 1 / Case 2 / Case 3 usw.

Beispiel
Code:
Private Sub ComboBox8_Change()

Select Case ComboBox8.Value
Case 1
ComboBox1.Visible = False
End Select
End Sub

Frage B) habe ich leider nicht ganz verstanden da ich nicht weiß wohin was geschrieben werden soll. Spalten Befüllung gibt es nicht in der Excel.

Ich hoffe ich konnte dir etwas helfen.

Beste Grüße
[-] Folgende(r) 1 Nutzer sagt Danke an MajorOli für diesen Beitrag:
  • Maria 6
Top
#3
Hallo MajorOli



Vielen Dank für deine schnelle Meldung.

Nach ersten Test ist das genau was ich gesucht habe, noch funktioniert es.

Aber zur Sicherheit hier nochmal den Code den ich erweitert habe. War es so gemeint oder kann man ihn noch kürzer schreiben?
Mit der zweiten Frage habe ich natürlich nicht Spaltenweise , sondern jenach Befüllung der jeweiligen Combobox oder Textbox in die jeweilige Spalte geschrieben werden , wie ich in der Tabelle schon geschrieben hatte 
Code:
Private Sub ComboBox8_Change()

Select Case ComboBox8.Value
Case 1
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
TextBox2.Visible = False
TextBox3.Visible = False
TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
Case 2
ComboBox1.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
TextBox1.Visible = False
TextBox3.Visible = False
TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
Case 3
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
Case 4
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
TextBox3.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
Case 5
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
TextBox3.Visible = False
TextBox4.Visible = False
TextBox6.Visible = False
TextBox7.Visible = False
Case 6
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox7.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
TextBox3.Visible = False
TextBox4.Visible = False
TextBox5.Visible = False
TextBox7.Visible = False
Case 7
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
TextBox3.Visible = False
TextBox4.Visible = False
TextBox5.Visible = False
TextBox6.Visible = False

End Select
End Sub
Top
#4
Hallo,

bist Du mit Schleifen vertraut?
For I=2 to 7
.
Next

????? Damit wird dein Code um einiges schlanker, denn Du musst jetzt das selbe noch einmal mit visible=true machen ...

Lade doch mal eine Tabelle hoch
Gruß
Marcus

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
[-] Folgende(r) 1 Nutzer sagt Danke an marose67 für diesen Beitrag:
  • Maria 6
Top
#5
Halllöchen,

noch ein Hinweis zur Schleife:

For i = 1 To 7
MsgBox Controls("ComboBox" & i).Name
Next


Dann würde ich das Ganze auch einer Funktion übergeben, z.B.


Code:
Private Sub ComboBox8_Change()
If ComboBox8.Value > 0 Then BlendeCB ComboBox8.Value
End Sub

Private Sub BlendeCB(iCB As Integer)
Dim iCnt%
For i Cnt= 1 To 7
  Controls("ComboBox" & iCnt).Visible = (iCB <> iCnt)
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Maria 6
Top
#6
Hallo  schauan

Dir auch erst mal Danke für deine Antwort.
Habe dein Makro mal getestet, leider muss ich sagen es liefert mir nicht das Wunschergebnis so wie ich es mir vorstelle.
Bei deinem Makro wird nur die eine Combobox ausgeblendet leider, es sollten wenn eine Auswahl in Combobox 8 getroffen wurde nur eine Combobox und die Textbox dazu zusehen sein. vielleicht mache ich ja noch was falsch weiß aber noch nicht was.
Beispiel:
Wähle ich die 6 in Combobox 8 aus , so soll nur die Combobox 6 und die Textbox 6 zusehen sein, der Rest der Boxen sollte ausgeblendet sein.

Hallo Marcus

Dir auch danke für deine Antwort.

Eine Datei hatte ich schon im Anfangspost mit drin, vielleicht übersehen.
Eine Schleife zu programmieren kann ich leider noch nicht, ganz kleine Abänderungen würde ich vielleicht noch hinbekommen.
Wie müsste denn die Schleife aussehen für mein Fall?
Top
#7
Einfacher geht es wenn die Conntrols sich in einem 'Frame' befinden: dann braucht man nur das 'Frame' ein/auszublenden.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#8
Hallo Maria 6,

Code:
Private Sub ComboBox8_Change()
  If ComboBox8.Value > 0 Then BlendeCB ComboBox8.Value
End Sub

Private Sub BlendeCB(iCB As Integer)
  Dim iCnt As Long
  For iCnt = 1 To 7
    Controls("ComboBox" & iCnt).Visible = False
  Next iCnt
  Controls("ComboBox" & iCB).Visible = True
  Controls("TextBox" & iCB).Visible = True
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Maria 6
Top
#9
Hallöchen,

dann hab ich es genau falsch rum verstanden. iCnt <> iCB liefert True für allen Boxen die ungleich der Eingabe sind, entsprechend sind die dann auch sichtbar. iCnt = iCB würde nur bei der eingegebenen Zahl True liefern und entsprechend wäre dann nur die sichtbar.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Maria 6
Top
#10
Hallo Uwe

Dir auch danke schön für deine Antwort.
Habe dein Makro mal getestet, anfangs war noch ein Fehler(eine Codezeile zu wenig drin) das konnte ich aber ganz schnell selber lösen.
Ich bin halt Blond und stehe in Sachen VBA noch ganz in Anfangsschuhen, aber habe wieder was neues gelernt

Hallo schauan
Ich gebe dir keine Schuld, habe es vielleicht zu schlecht erklärt halt. Wie sagt man im Alltag Blonde Frau.......
Trotzdem danke für deine Erklärung.

Allen Helfern ein ganz liebes Dankeschön für eure Hilfe.
Ich versuche mal den Rest selbst zu schaffen, lasse drum noch das Thema offen (ungelöst) da stehen.
Falls ich Probleme habe melde ich mich nochmals.

Gruß
Maria 6
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste