VisualBasic [vba] Excel 2010 Checkbox Problem

Pr3d4t0r2007

Cadet 2nd Year
Registriert
Feb. 2007
Beiträge
16
[vba] Excel 2010 Checkbox Problem[solved]

Hallo, ich habe das Problem dass ich den Wertr der Checkbox "trh" nicht auslesen kann.. hier der Code
Sub Copypaste1()

Application.ScreenUpdating = False
If ActiveSheet.Shapes("trh").Value = xlOn Then
MsgBox ("Checked")
' Sheets("Tabelle1").Select
' Range("D3:L7").Select
' Selection.Cut
' Sheets("Tabelle1_cb").Select
' Range("D3").Select
' ActiveSheet.Paste
' Sheets("Tabelle1").Select
ElseIf ActiveSheet.Shapes("trh").Value = xlOff Then
MsgBox ("Unchecked")
' Sheets("Tabelle1_cb").Select
' Range("D3:L7").Select
' Selection.Cut
' Sheets("Tabelle1").Select
' Range("D3").Select
' ActiveSheet.Paste
End If
Application.ScreenUpdating = True
End Sub

habe auch schon mit value true und false experimentiert jedoch bekomme ich immer die meldung "Objekt unterstützt diese Eigenschaft oder Methode nicht" !
Bitte um Hilfe!
gruß flo
 
Zuletzt bearbeitet:
geht das nicht so:

if trh.checked = true then
blabla
end if

?
 
ich sehs mir das kurz an in excel dauert nen moment
Ergänzung ()

ah ja es muss

if trh.value = true then
' blabla
end if

lauten
 
ich bekomme trotzdem einen laufzeitfehler "objekt erforderlich"... ?

das ist ja nur ein sub, habe die checkbox mit code erstellt in einem anderen sub. und dann testweise poer hand verknüpft. ohne die if-abfrage wurd der befehl ausgeführt, aber mit if bekomm ich die besagten fehler
 
Zuletzt bearbeitet:
dann fehlr dir der Knopf!
geh mal in den entwurfsmodus -> entwicklertools-> einfügen machst du einen knopf.
dann auf entwicklermodus und rechtsklick -> eigenschaften auf den knopf
der eintrag der bei Caption steht muss vor dem .Value stehen

der fehler kommt weil dein Objekt(knopf trh) nicht existiert. der name im Code unterscheidet sich ja von der beschriftung den knopfes
 
die checkbox wurde erstellt und is in der richtigen tabelle viorhanden. wie geasgt ohne if abfrage ging auch alles einwandfrei. hier noch kurz der quellcode zum erstellen der checkbox. jedoch verknüpfung hab ich per hand gemacht.
Code:
Private Sub AddCheckbox(row As Integer, col As Integer)
    Dim cb As Object
    Dim buffer As String
    Dim posX As Single
    Dim posY As Single
    buffer = ActiveSheet.Cells(row, col).Value
    posX = ActiveSheet.Cells(row, col).Left
    posY = ActiveSheet.Cells(row, col).Top
    ActiveSheet.Cells(row, col).Value = ""
    
    Set cb = ActiveSheet.CheckBoxes.Add(posX, posY, 120, 2)
    cb.Caption = buffer
    cb.Name = buffer
    
    ActiveSheet.CheckBoxes(buffer).Value = True
End Sub

jetzt kommt als meldung variable nicht definiert bei trh... sehr dubios
 
Zuletzt bearbeitet:
ok dann müsste buffer der name der checkbox sein.
also heißt es so:

if buffer.value = true then
' blbla
end if

cb.Name ist der Name auf den du zum programmieren zugriefst wenn du fragen willst ob der hacken( Value) gesetzte (true/false) ist.
cb.Caption ist der Text der dir auf dem Knopf angezeigt wird.

Sorry ich hab das vorhin verwechselt
 
Dubioserweise ist die richtige Lösung
Code:
ActiveSheet.CheckBoxes("trh").Value = xlOn
obwohl ich bei der Erstellung ja True übergebe....?!
 
Zuletzt bearbeitet:
ok das sieht eigentlich gut aus. due sprichst die checkbox über den string an weil du ihn aus einer zelle holst.
warum es xlon heißt weiß ich auch nicht.
ich programmieren in excel bisher nur mit forms. da muss ich keine buttons auf einem sheet erzeugen.
aber schön das es jetzt klappt
 
Es geht auch ganz einfach. Man geht in die Eigenschaften des Kontrollkästchens unter Steuerung und wählt eine Zelle bei der Zellverknüpfung aus. Wenn man in diese Zelle eine 1 schreibt ist der hacken gesetzt eine 0 macht den hacken weg.
Nun einfach ein Button erstellen und folgenden einfachen Code einfügen:
Code:
Sub Schaltfläche2_Klicken()

If Range("A5") = 1 Then
    Range("A5") = 0
Else
    Range("A5") = 1
End If

End Sub

Damit kann man dann über den Button den Hacken raus und rein machen. Kannst du dann natürlich auch abfragen ob in der Zelle eine 1 oder 0 steht :) Und wenn du die Zelle verstecken willst, mach die Schriftart weiß und zieh das Kontrollkästchen über die Zelle :)
 

Anhänge

Zuletzt bearbeitet:
Klingt im allgemeinen ganz gut, in meinem fall jedoch unsinn da dynamisch checkboxen erstellt werden und somit die genaue anzahl und position vorher nicht bekannt sind un der anwender danach keine klickarbeit mehr haben soll. aber danke!
 
Zurück
Oben