2017-10-15 3 views
-1

Ich benutze Ms Access und ein Formular mit 10 Kontrollkästchen und eine Schaltfläche haben. Der Benutzer kann von 1 bis 10 Checkboxen prüfen. Jedes Kontrollkästchen repräsentiert ein Wort. Ich brauche einen Code, um alle Checkboxen von 1 bis 10 zu durchlaufen und mir eine Zeichenfolge zu geben, damit ich sie zu einem Modul analysieren kann.Konvertieren Sie alle Kontrollkästchen in eine Zeichenfolge

Private Sub cmdOK_Click() 
Dim str1, str2, str3, str4, str5 As String 
Dim strString As String 

If chB1 = True Then 
str1 = "111 - " 
End If 

If chB2 = True Then 
str2 = "222 - " 
End If 

If chB3 = True Then 
str3 = "333 - " 
End If 

If chB4 = True Then 
str4 = "444 - " 
End If 

If chB5 = True Then 
str5 = "555 - " 
End If 

strString = str1 & str2 & str3 & str4 & str5 & Date 
Debug.Print strString 

End Sub 

Ich habe das gerade jetzt. Kann ich es anders machen? Irgendwelche Hilfe?

Vielen Dank im Voraus.

+0

Wenn 'CheckBox1' aktiviert ist, wird sein Wert' true'. Wenn der Wert "True" ist, möchten Sie seine "Caption" in Ihrer Ergebniszeichenfolge verketten. Weiter mit 'CheckBox2'. Auf welchem ​​Teil bist du fest? –

+0

Code hinzufügen. Kann ich es mit Schleife machen. – YvetteLee

Antwort

3

Lassen Sie jede CheckBox Kontrolle seine zugehörige Saite irgendwo haben - könnte seine Caption, könnte seine Tag sein, was auch immer - Sie brauchen eine Möglichkeit, sich die Zeichenfolge aus dem Kontrollfeld zu erhalten, wenn Sie zu hart Code vermeiden, soll es .

Dann können Sie Ihre Kontrollkästchen iterieren, und mit einem dynamischen Array, das Sie auf die Anzahl der aktivierten Kontrollkästchen skalieren, können Sie die zugehörigen Zeichenfolgen in jedem Array-Index speichern.

Dim items(), itemCount As Long 
Dim ctrl As MSForms.Control, chkBox As MSForms.CheckBox 

For Each ctrl In Me.Controls 'iterate all form controls 
    If TypeOf ctrl Is MSForms.CheckBox Then 'only care for checkboxes 
     Set chkBox = ctrl ' type cast to the MSForms.CheckBox interface 
     If chkBox.Value Then 'only care for checked checkboxes 
      itemCount = itemCount + 1 
      ReDim Preserve items(1 To itemCount) 
      items(itemCount) = chkBox.Tag 'or whatever you've mapped the strings to 
     End If 
    End If 
Next 

Dann können Sie die Array-Elemente mit verbinden, was auch immer Separator Sie verwenden möchten, mit der VBA.Strings.Join Funktion:

Debug.Print Join(items, " - ") 
Verwandte Themen