Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TypeOf ? Wie spreche ich Checkboxen an?

TypeOf ? Wie spreche ich Checkboxen an?
12.10.2006 22:39:30
Reinhard
Hallo Wissende,
an sich wollte ich nur ein makro schreiben was alle Checkboxen des Blattes durchgeht und dann prozentual ausgibt, wieviel Prozent ausgewählt sind. Also ermitteln wieviele den wert Nix, Falsch oder True haben.
Mit CB.Value kam ich nicht weiter und suchte im Ineternet und fand seltsamen Code, den ich mir anpasste. Da verstehe ich einiges nicht.
Auf dem Blatt gibt es 2 Checkboxen aus der Steuerelemnttoolbox.
Sub tt()
Dim CB
'For Each CB In ActiveSheet.CheckBoxes ' For Schleife wird nicht ausgeführt
'For Each CB In ActiveSheet.Controls 'Fehler 438
For Each CB In ActiveSheet.Shapes
MsgBox CB.Name
If TypeOf CB Is CheckBox Then
CB.Value = Unchecked
End If
Next
End Sub

Erste For-Schleife: Warum werden die beiden Checkboxen nicht errkannt?
Zweite For-Schleife, wieso der Fehler?
Dritte For-Schleife: die läuft durch, die Msgbox zeigt auch nacheinander Checkbox1 und Checkbox2 an, aber die If-bedingung wird nie erfüllt?
Nun ist in meiner Vba-Hilfe "Typeof" überhaupt nicht erwähnt, dito "unchecked"
Kommen die aus einem Verweis? Und wenn ja, wie kriege ich da Infos dazu.
Gruß
Reinhard
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TypeOf ? Wie spreche ich Checkboxen an?
12.10.2006 23:06:32
K.Rola
Hallo,
versuchs mal mit OLEObjects und ProgId, dazu findest du sogar was in der Hilfe.
Gruß K.Rola
AW: TypeOf ? Wie spreche ich Checkboxen an?
12.10.2006 23:53:13
Reinhard
Hallo K.Rola,
bin schon am lesen und (was mir mehr Laune als Lesen oder gar Verstehen macht *gg) Ausprobieren. Ein beispiel aus der Hilfe funktionierte.
Nicht gänzlich unerwartet ging das da schief (Vorhanden sind nur 2 Checkboxen):
Sub tt2()
Dim anz
With ActiveSheet
For anz = 1 To .OLEObjects.Count
MsgBox .OLEObjects(anz).Value 'Fehler 438
Next anz
End With
End Sub

Danke ^ Gruß
Reinhard
AW: TypeOf ? Wie spreche ich Checkboxen an?
12.10.2006 23:59:05
K.Rola
Hallo,
einfaches Beispiel:
Option Explicit

Sub til()
Dim cb As Object
Dim CbCountTrue As Long
Dim CbCountFalse As Long
Dim CbCountElse As Long
For Each cb In Sheets(1).OLEObjects
If cb.progID Like "Forms.Check*" Then
Select Case cb.Object.Value
Case True: CbCountTrue = CbCountTrue + 1
Case False: CbCountFalse = CbCountFalse + 1
Case Else: CbCountElse = CbCountElse + 1
End Select
End If
Next
MsgBox "Wahr: " & CbCountTrue & Chr(10) & _
"Falsch: " & CbCountFalse & Chr(10) & _
"TST: " & CbCountElse
End Sub

Gruß K.Rola
Anzeige
AW: TypeOf ? Wie spreche ich Checkboxen an?
14.10.2006 12:37:10
Reinhard
Hallo K.Rola,
danke dir, habe mir den Code abgespeichert.
Auf den Code wäre ich nie gekommen :-(
Was mich immer noch interessiert ist, bei
'For Each CB In ActiveSheet.CheckBoxes ' For Schleife wird nicht ausgeführt
'For Each CB In ActiveSheet.Controls 'Fehler 438
For Each CB In ActiveSheet.Shapes
MsgBox CB.Name
If TypeOf CB Is CheckBox Then
CB.Value = Unchecked
End If
Next
End Sub

Wieso wird bei
For Each CB In ActiveSheet.CheckBoxes
keine Checkbox gefunden?
und bei der anderen Variante mit .Shapes, wieso wird bei
If TypeOf CB Is CheckBox
der If-Zweig nihct ausgeführt?
Gruß
Reinhard
Anzeige
AW: TypeOf ? Wie spreche ich Checkboxen an?
14.10.2006 16:59:33
K.Rola
Hallo,
aus der Hilfe:
Herausfinden der Klasse, zu der ein Objekt gehört
Generische Objektvariablen (also mit As Object deklarierte Variablen) können
Objekte unterschiedlichster Klassen enthalten. Ebenso können Variablen, die mit den
integrierten Form- und Control-Typen von Visual Basic deklariert wurden, Formulare
und Steuerelemente unterschiedlicher Klassen enthalten.
Wenn Sie Variablen dieses Typs verwenden, müssen möglicherweise abhängig von
der Klasse eines Objektes unterschiedliche Aktionen ausgeführt werden, falls
beispielsweise einige Objekte bestimmte Eigenschaften oder Methoden nicht
unterstützen. Visual Basic bietet dazu zwei Möglichkeiten: das TypeOf-Schlüsselwort
und die TypeName-Funktion.
Das TypeOf-Schlüsselwort kann nur in If ... Then ... Else-Anweisungen verwendet
werden. Sie müssen den Klassennamen direkt im Code angeben, zum Beispiel:
If TypeOf MyControl Is CheckBox Then.
Die TypeName-Funktion ist flexibler. Sie können Sie überall im Code verwenden,
und da sie den Klassennamen als Zeichenfolge zurückgibt, können Sie den
Namen mit dem Wert in einer Zeichenfolgenvariablen vergleichen
Gruß K.Rola

Anzeige
AW: TypeOf ? Wie spreche ich Checkboxen an?
14.10.2006 22:52:10
Reinhard
Hallo K.Rola,
ich danke dir wiedermal.
Ich habe den Text jetzt nur überflogen, lese ihn nachher genauer durch um evtl alles zu verstehen :-)
Was ich mich frage, wie/woher hast du den Text? Ich war bei XL2000 in der Vba Hilfe, auch der Suchassistent fand da nix zu TypeOf.
Naja, wird wohl an MS liegen, z.B. entweder sverweis oder vlookup, da findet man nix in der jeweiligen Hilfe, aber wenn man nach verweis sucht stößt man über "siehe auch" auf sverweis.
Gruß
Reinhard

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige