PDA

Vollständige Version anzeigen : Anfängerfragen


Tiberius
26.02.2008, 17:58
Hallo,

ich hab mich heute drüber gemacht mit VBA in Excel anzufangen da ich ein Ziel (und leider auch nen Termin) im Auge habe.

Im Anhang habe ich eine Datei beigefügt wo ich mein Problem exemplarisch eingebaut habe.

In der UserForm2 habe ich ein Fenster dargestellt indem eine Frabauswahl stattfinden kann. Wie prüfe ich nach wieviele farben angeklickt worden sind. Gut, ein Zähler wäre möglich aber bei womöglich 10 oder mehr Farben würde es mit einer Schleife evtl einfacher gehen.

Die UserForm2 holt sich ja in die CheckBoxen die Begriffe aus der tabelle. So weit so gut. Unabhängig vom vorherigen Fall würde mich interessieren wie ich es z.B. hinbekomme daß schon überall ein Häkchen vorab sitzt wenn ich die Userform2 aufrufe und als Erweiterung dessen kein Häkchen gesetzt ist wenn z.B. die Liste der Farben in der Liste weniger sind als Checkboxen in der UserForm.

-----------------------------------------------------------------------

Wie muß ich Variablen deklarieren wenn sie nicht local sondern global gelten sollen? Ich komme von einer anderen Programmiersprache, da waren alle global außer man hat in den Prozeduren entsprechende als local am Anfang definiert.

------------------------------------------------------------------------

In einem noch anderen Beispiel habe ich z.B. in einer Userform2 eine Liste von möglichen Zeilen aufgebaut (15 Stück mal angenommen). Dort sollen dann max 5 (das kann ich dann z.B. mit der Funktion abfangen was ich anfangs gefragt habe) ausgewählt werden. Diese 5 (per Kontrollkästchen ausgewählt) sollen in die Userform1 übernommen werden. Dort sollen 5 Textfelder zur Verfügung stehen wo dann diese max. 5 angewählten Punkte übernommen werden.


Huh, das solls für den Anfang erstmal gewesen sein. Für Euch ist das bestimmt ein Klacks aber ich brauch erst mal Hilfestellung dafür.

Danke für Eure Hilfe.

Grüße

Tiberius

jinx
02.03.2008, 14:04
<font size="2" face="Century Gothic">Moin, Tiberius,

zu 1.: mit einer Schleife über die auf der Userform vorhandenen Elemente:

Private Sub CommandButton1_Click()

Dim s As String
Dim oControl As Control

For Each oControl In UserForm2.Controls
If TypeName(oControl) = "CheckBox" And oControl.Value Then
s = s & oControl.Caption & ", "
End If
Next
s = Left(s, Len(s) - 2)
UserForm1.TextBox3.Value = s
Unload UserForm2
End Sub
zu 2.: den Kontrollkästchen analog zur ersten Schleife den Wert TRUE zuweisen:

Private Sub UserForm_Initialize()
Dim oControl As Control
With UserForm2
.CheckBox1.Caption = Sheets("Farbe").Cells(2, 1).Value
.CheckBox2.Caption = Sheets("Farbe").Cells(3, 1).Value
.CheckBox3.Caption = Sheets("Farbe").Cells(4, 1).Value
.CheckBox4.Caption = Sheets("Farbe").Cells(5, 1).Value
.CheckBox5.Caption = Sheets("Farbe").Cells(6, 1).Value
End With
For Each oControl In UserForm2.Controls
If TypeName(oControl) = "CheckBox" Then
oControl.Value = True
End If
Next
End Sub
zu 3.: Public (oder Global) in einem allgemeinen Modul dimensionieren:

Public glngRow as Long

zu 4.: und die Frage? :confused:</font>