Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

checkbox in array eintragen

Forumthread: checkbox in array eintragen

checkbox in array eintragen
08.09.2006 15:49:23
david
hi ihr tüfter,
folgendes problem:
ich habe etwa 20checkboxen in einer userform, also
checkbox1
.
.
.
checkbox20
nur einige davon werden aktiviert, z.b 3,7,15
in meinem array sollen dann diese aktiven checkboxen auftauchen, also quasi
arr(3,7,15)
wie kann ich das machen?
danke im vorraus
(achja wie kann ich eine einzelne chackbox ansprechen, ich bräuchte
"if checkbox(i).value=true then", aber das geht irgendwie nicht?)
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: checkbox in array eintragen
08.09.2006 17:41:44
{Boris}
Hi David,
hier mal ein Beispiel, wie du die Namen der aktiven Checkboxen einlesen kannst:
Option Explicit

Private Sub CommandButton1_Click()
Dim arr() As Variant, objCb As Control, i As Integer, k As Integer
For Each objCb In Me.Controls
If TypeName(objCb) Like "Check*" Then
If objCb.Value = True Then
i = i + 1
ReDim Preserve arr(1 To i)
arr(i) = objCb.Name
End If
End If
Next objCb
'Diese Schleife dient nur zu Testzwecken, um das Array zu überprüfen
For k = 1 To i
MsgBox arr(k)
Next k
End Sub

Zu Deiner 2. Frage:
(achja wie kann ich eine einzelne chackbox ansprechen, ich bräuchte
"if checkbox(i).value=true then", aber das geht irgendwie nicht?)

Me.Controls("CheckBox" & i)
Natürlich nur, wenn Du die Box nicht umbenannt hast.
Grüße Boris
Anzeige
Danke!!!
08.09.2006 18:42:09
david
sehr schön ich danke dir, da wäre ich nicht drauf gekommen.
ich musste nur noch....
arr(i) = objCb.Name
...ändern in...
arr(i) = Mid(objCb.Name, 9, Len(objCb.Name) - 8)
jetzt habe ich einen array mit den aktivierten checkbox-nummern.
DAAANKESCHÖN
;
Anzeige
Anzeige

Infobox / Tutorial

Checkboxen in ein Array eintragen


Schritt-für-Schritt-Anleitung

  1. Öffne Deine UserForm in Excel, in der die Checkboxen definiert sind. Du solltest mindestens 20 Checkboxen haben, zum Beispiel CheckBox1 bis CheckBox20.

  2. Füge einen CommandButton hinzu, um die Auswahl der Checkboxen zu verarbeiten.

  3. Verwende den folgenden VBA-Code, um die aktiven Checkboxen in ein Array zu speichern:

    Private Sub CommandButton1_Click()
       Dim arr() As Variant, objCb As Control, i As Integer, k As Integer
       For Each objCb In Me.Controls
           If TypeName(objCb) Like "Check*" Then
               If objCb.Value = True Then
                   i = i + 1
                   ReDim Preserve arr(1 To i)
                   arr(i) = Mid(objCb.Name, 9, Len(objCb.Name) - 8)
               End If
           End If
       Next objCb
    
       'Diese Schleife dient nur zu Testzwecken, um das Array zu überprüfen
       For k = 1 To i
           MsgBox arr(k)
       Next k
    End Sub
  4. Testen: Klicke auf den CommandButton, um die aktiven Checkboxen anzuzeigen. Die Checkbox-Nummern werden im Array gespeichert.


Häufige Fehler und Lösungen

  • Checkboxen werden nicht erkannt: Stelle sicher, dass Deine Checkboxen korrekt benannt sind und den Typ "CheckBox" haben.

  • Fehler beim Ansprechen einer Checkbox: Wenn Du eine bestimmte Checkbox ansprechen möchtest, verwende:

    Me.Controls("CheckBox" & i)
  • Array bleibt leer: Überprüfe, ob wirklich Checkboxen aktiviert sind, bevor Du das Array erstellst.


Alternative Methoden

Falls Du mit HTML arbeitest und Checkboxen aus einem HTML-Formular in ein Array übertragen möchtest, kannst Du die Checkboxen in ein JavaScript-Array speichern:

let checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
let selectedValues = Array.from(checkboxes).map(cb => cb.value);

Diese Methode ist besonders nützlich, wenn Du eine html checkbox array benötigst.


Praktische Beispiele

Angenommen, Du hast in Deiner UserForm mehrere Checkboxen für verschiedene Optionen. Wenn der Benutzer mehrere Optionen auswählt, wird ein Array mit den aktivierten Optionen erstellt. So kannst Du die aktivierten Checkboxen für weitere Berechnungen oder Auswertungen verwenden.

' Beispiel zur Verwendung des Array
Dim selectedOptions As String
For k = 1 To i
    selectedOptions = selectedOptions & arr(k) & ", "
Next k
MsgBox "Aktivierte Checkboxen: " & selectedOptions

Tipps für Profis

  • Verwende ReDim Preserve: Dies ist wichtig, um die Größe des Arrays dynamisch zu ändern, ohne die bestehenden Werte zu verlieren.

  • Benennungskonventionen: Halte Dich an eine klare Benennungskonvention für Deine Checkboxen, um Verwirrung zu vermeiden.

  • Debugging: Nutze Debug.Print anstelle von MsgBox, um die Werte in der Direktansicht zu sehen, ohne ständig Fenster schließen zu müssen.


FAQ: Häufige Fragen

1. Wie kann ich die Werte der Checkboxen direkt in einer Zelle speichern?
Du kannst die Werte mit einer Schleife in die Zellen eines Arbeitsblatts schreiben.

2. Kann ich auch Gruppen von Checkboxen erstellen?
Ja, das kannst Du, indem Du die Checkboxen in Frame-Steuerelementen gruppierst, um die Logik zu vereinfachen.

3. Welche Excel-Version wird benötigt?
Der Code ist für Excel 2010 und höher geeignet, sollte aber in den meisten Versionen funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige