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

String in Object umwandeln

Forumthread: String in Object umwandeln

String in Object umwandeln
27.03.2003 09:55:14
Bernhard
Wie kann man einen String in ein Object umwandeln?
Konkret möchte ich eine Userform mit mehreren Checkboxen initialisieren. Es sollen nur die Checkboxen angezeigt werden, deren Name in einem Worksheet drinsteht. Hier mein bisheriger Code:

Private Sub userform_initialize()
'einlesen wieviele Checkboxen sichtbar sein sollen
AnzahlCheckboxen= Worksheets("zu_sehende_Checkboxen").Cells(1,1).Value

For i = 1 To AnzahlCheckboxen
'einlesen des Namens der Checkbox
checkbox = Worksheets("zu_sehende_Checkboxen").Cells(i + 2, 2).Value
If Not Thema = "" Then
Thema.Visible = True
End If
Next i

End Sub



Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: String in Object umwandeln
27.03.2003 10:02:28
Michael Scheffler

Hallo,

clever wäre es, Du würdest die Checkboxen dynamisch hinzufügen.

Schau die mal die Add-Methode der Controls an.

Gruß

Micha

Re: String in Object umwandeln
27.03.2003 10:25:39
bernhard

Hi Micha,

danke! Das funktioniert super!

Gruss,

Bernhard


Re: String in Object umwandeln
27.03.2003 12:50:54
Bernhard

Das Hinzufügen der Checkboxen klappt ja jetzt, aber ich die Checkboxen nicht mehr abfragen....
Wie greife ich denn jetzt auf den Status der Checkbox zu?

Ich habe die Checkbox so erzeugt:
Set TestBefehl = Controls.Add("Forms.checkbox.1")

die abfrage:

MyVar = Checkbox1.value

bringt dann leider nur den Fehler: "object required"
damit kann ich nur leider nichts anfangen..


Anzeige
Re: String in Object umwandeln
27.03.2003 13:26:58
Michael Scheffler

Hi,

indem Du eeine eigene Klasse für die Checkbox schreibst. Du fügst zuerst jede Checkbox einer Collection oder einem Array mit einem Set-Befehl hinzu. Dann kannst Du in einer Klasse, deren zentraler Befehl WithEvents ist, Dein Ereignis programmieren. Schau mal nach meinem Namen ins Archiv, da ist u.a. ein Klasse für Textboxen und so ähnlich geht das für die Checkbox auch.

Gruß

Micha


Anzeige
;
Anzeige

Infobox / Tutorial

String in Object umwandeln in VBA


Schritt-für-Schritt-Anleitung

Um einen String in ein Object in VBA umzuwandeln, beispielsweise um Checkboxen dynamisch in einer Userform zu erstellen, folge diesen Schritten:

  1. Userform initialisieren: Füge den folgenden Code in das Userform ein, um die Anzahl der Checkboxen zu bestimmen und diese dynamisch hinzuzufügen:

    Private Sub userform_initialize()
        Dim AnzahlCheckboxen As Integer
        Dim i As Integer
        Dim Checkbox As MSForms.CheckBox
    
        ' Anzahl der sichtbaren Checkboxen einlesen
        AnzahlCheckboxen = Worksheets("zu_sehende_Checkboxen").Cells(1, 1).Value
    
        ' Checkboxen dynamisch hinzufügen
        For i = 1 To AnzahlCheckboxen
            Dim checkboxName As String
            checkboxName = Worksheets("zu_sehende_Checkboxen").Cells(i + 2, 2).Value
    
            Set Checkbox = Controls.Add("Forms.CheckBox.1", checkboxName)
            Checkbox.Caption = checkboxName
            Checkbox.Visible = True
        Next i
    End Sub
  2. Checkboxen abfragen: Um den Status einer Checkbox abzufragen, stelle sicher, dass Du die Checkboxen korrekt in einer Collection speicherst. So kannst Du den Wert abfragen:

    Dim MyVar As Boolean
    MyVar = Checkbox.Value ' Checkbox muss korrekt referenziert werden

Häufige Fehler und Lösungen

  • Fehler: "Object required": Dieser Fehler tritt auf, wenn Du versuchst, auf eine Checkbox zuzugreifen, die nicht korrekt referenziert wurde. Stelle sicher, dass Du die Checkboxen in einer Collection speicherst und die richtigen Namen verwendest.

  • Checkbox nicht sichtbar: Überprüfe, ob die Checkboxen im Code als sichtbar gesetzt sind (Checkbox.Visible = True).


Alternative Methoden

Eine alternative Möglichkeit, Checkboxen zu verwalten, ist die Verwendung einer Klasse für die Checkboxen. Du kannst eine eigene Klasse erstellen, die mit WithEvents arbeitet, um Ereignisse für die Checkboxen zu handhaben. So behältst Du die Übersicht über den Status jeder Checkbox.


Praktische Beispiele

Hier ist ein Beispiel, wie Du eine Collection zur Speicherung der Checkboxen nutzen kannst:

Dim Checkboxen As Collection
Set Checkboxen = New Collection

' Checkboxen hinzufügen
For i = 1 To AnzahlCheckboxen
    Set Checkbox = Controls.Add("Forms.CheckBox.1", "Checkbox" & i)
    Checkboxen.Add Checkbox
Next i

' Checkboxen abfragen
For Each cb In Checkboxen
    If cb.Value Then
        Debug.Print cb.Caption & " ist ausgewählt."
    End If
Next cb

Tipps für Profis

  • Nutze die Add-Methode der Controls, um eine flexible und dynamische Userform zu erstellen.
  • Implementiere Klassen für komplexe Logiken, um Deine VBA-Projekte effizienter und wartbarer zu gestalten.
  • Schaue in das VBA-Referenzhandbuch für detaillierte Informationen über die verschiedenen Objekttypen.

FAQ: Häufige Fragen

1. Wie kann ich den Namen der Checkboxen dynamisch festlegen?
Du kannst die Namen der Checkboxen aus einem Worksheet auslesen, wie im Schritt-für-Schritt-Beispiel gezeigt.

2. Was ist der Unterschied zwischen einer Checkbox und einer Option Button?
Eine Checkbox ermöglicht die Auswahl mehrerer Optionen, während ein Option Button immer nur eine Auswahl innerhalb einer Gruppe zulässt.

3. Wie kann ich den Wert einer Checkbox abfragen?
Verwende Checkbox.Value, um den Status der Checkbox zu überprüfen. Stelle sicher, dass die Checkbox korrekt erstellt und referenziert wurde.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige