Von |
Koppinka |
eMail |
|
Am |
18. Dezember 2008 um 13:50:45 |
Frage |
Hallo Spezialisten,
habe ein Workbook mit mehreren Tabellen, auf jede davon wird wiederum mit mehreren Formularen zugegriffen. Nun hat mein Formular im Grundzustand 120 Textboxen in 20 Reihen zu 6 Spalten. Angezeigt werden sollen aber nur so viele, wie Datensatzreihen belegt sind.
Dazu habe ich erst einmal alle Textboxen auf ".visible = false" gesetzt, will sie nun s.o. wieder sichtbar machen und mit Zuordnung "Textbox1 = frm...worksheets...cells..." holen.
Schon allein beim Holen der Daten gibt das einen irre langen Code (120 Zeilen für die Textboxen allein). Das gleiche dann für die 20 Varianten der möglichen Datensatzanzahl.
Gibt es eine Möglichkeit, Textboxen als Variablen zu gestalten, so dass ich statt:Option Explicit Dim cntOG1 As Integer Dim cntS As Integer Dim n As Integer Dim m As Integer Dim Quell_FL As Worksheets Sub Holen_OG_1() cntOG1 = 0 For n = 0 To 99 If Worksheets("Feuerlöscher_55-56").Cells(n + 3, 2) = "EG" And _ Worksheets("Feuerlöscher_55-56").Cells(n + 3, 3) = "1" Then cntOG1 = cntOG1 + 1 End If Next n If cntOG1 = 1 Then frm_I_EG.TextBox1.Visible = True frm_I_EG.TextBox2.Visible = True frm_I_EG.TextBox3.Visible = True frm_I_EG.TextBox4.Visible = True frm_I_EG.TextBox5.Visible = True frm_I_EG.TextBox6.Visible = True frm_I_EG.OptionButton1.Visible = True End If If cntOG1 = 2 Then frm_I_EG.TextBox1.Visible = True frm_I_EG.TextBox2.Visible = True frm_I_EG.TextBox3.Visible = True frm_I_EG.TextBox4.Visible = True frm_I_EG.TextBox5.Visible = True frm_I_EG.TextBox6.Visible = True frm_I_EG.TextBox7.Visible = True frm_I_EG.TextBox8.Visible = True frm_I_EG.TextBox9.Visible = True frm_I_EG.TextBox10.Visible = True frm_I_EG.TextBox11.Visible = True frm_I_EG.TextBox12.Visible = True frm_I_EG.OptionButton1.Visible = True frm_I_EG.OptionButton2.Visible = True End If If cntOG1 = 3 Then frm_I_EG.TextBox1.Visible = True frm_I_EG.TextBox2.Visible = True frm_I_EG.TextBox3.Visible = True frm_I_EG.TextBox4.Visible = True frm_I_EG.TextBox5.Visible = True frm_I_EG.TextBox6.Visible = True frm_I_EG.TextBox7.Visible = True frm_I_EG.TextBox8.Visible = True frm_I_EG.TextBox9.Visible = True frm_I_EG.TextBox10.Visible = True frm_I_EG.TextBox11.Visible = True frm_I_EG.TextBox12.Visible = True frm_I_EG.TextBox13.Visible = True frm_I_EG.TextBox14.Visible = True frm_I_EG.TextBox15.Visible = True frm_I_EG.TextBox16.Visible = True frm_I_EG.TextBox17.Visible = True frm_I_EG.TextBox18.Visible = True frm_I_EG.OptionButton1.Visible = True frm_I_EG.OptionButton2.Visible = True frm_I_EG.OptionButton3.Visible = True End If . . . usw. z.B. so etwas hätte:' rein fiktiver code, wie ich es mir vorstelle Option Explicit Dim cntOG1 As Integer Dim cntS As Integer Dim n As Integer Dim m As Integer Dim i As Integer Dim Quell_FL As Worksheets Sub Holen_OG_1() cntOG1 = 0 For n = 0 To 99 If Worksheets("Feuerlöscher_55-56").Cells(n + 3, 2) = "EG" And _ Worksheets("Feuerlöscher_55-56").Cells(n + 3, 3) = "1" Then cntOG1 = cntOG1 + 1 End If Next n If cntOG1 = 1 Then For i = 1 To 6 frm_I_EG.TextBox(i).Visible = True Next i frm_I_EG.OptionButton1.Visible = True End If If cntOG1 = 2 Then For i = 1 To 12 frm_I_EG.TextBox(i).Visible = True Next i frm_I_EG.OptionButton1.Visible = True frm_I_EG.OptionButton2.Visible = True End If If cntOG1 = 3 Then For i = 1 To 18 frm_I_EG.TextBox(i).Visible = True Next i frm_I_EG.OptionButton1.Visible = True frm_I_EG.OptionButton2.Visible = True frm_I_EG.OptionButton3.Visible = True End If Das nächste wäre dann eine Formularvariable, damit ich statt nur mit "frm_I_EG. ..." auch mit "frm_II_EG. ..." usw. auf den im Modul befindlichen Code zugreifen kann.
Ich hoffe, dass dies nicht zu naiv gedacht ist und Ihr mir viel Schreibarbeit und MB's ersparen könnt.
Danke und MfG |
|