[VBA] Name einer Checkbox auslesen
#11
Hallo,

nach einem kurzen Blick in die Datei:

lass die Checkboxen weg, schreibe die Monatsnamen in die Zellen und starte die jeweiligen Makros per Doppelklick.

mfg
Top
#12
Hey,

gar keine so dumme Idee Smile
Allerdings soll er mir ja bei aktivier Checkbox ein Makro ausführen und dieses wieder löschen, wenn der Haken rausgenommen wird.
Das wird mit doppelklick in einer Zelle schwierig, oder? Brauche ja quasi "on" und "off"...  Undecided
Top
#13
Hallo,

M$ wusste es:

Code:
Sub Anlegen()
Dim Ole As OLEObject
For i = 1 To 12
    With Cells(i, 1)
         ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
            DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=33.75, Height _
            :=21.75).Select
    End With
Next i
End Sub
Sub Rename()
Dim Ole As OLEObject

For Each Ole In ActiveSheet.OLEObjects
    Ole.ShapeRange.ScaleWidth 2.5, msoFalse, _
        msoScaleFromTopLeft
    i = i + 1
    MM = Application.GetCustomListContents(8)(i)
     Ole.Name = MM
      Ole.Object.Caption = MM
     Debug.Print Ole.Name
Next Ole
End Sub

Der Code erzeugt 12 ActiveX-Chkbx, sowohl der Name als auch die Caption werden nach den 12 Monaten benannt.

Im Codeteil DIESES Arbeitblattes sind 12 ChkBx_Click() nötig, die können aber auf EIN Makro im allgemeinen Modul verweisen und übergeben den Monatsnamen.

mfg
Top
#14
Hallo,

offenbar gibt es noch eine weitere Datei, aus der du die Daten per Formel überträgst. Warum benutzt du nicht nur diese eine Datei und filterst den gewünschten Monat heraus?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#15
Hey,

klingt super!

Ich versteh aber noch nicht genau wie!?
Anlegen klappt. Wie kann ich hier die Anordnung festlegen??

Rename klappt noch nicht so ganz.
Ich glaube hier müssen wir ihm sagen, dass er nur die Checkboxen nehmen soll!? Irgendwie so vielleicht?
Code:
If TypeName(oobElement.Object) = "CheckBox" Then

Und wie kann ich nun wie von dir angesprochen das Makro in einem Modul mit Monatsnamen füllen?  Huh
Top
#16
Hallo Klaus-Dieter,

das geht leider nicht so einfach.

Ich benutze viele weitere Dateien. Den aktuellen Monat in meiner Übersicht. Bei Bedarf können aber auch ältere Monate hinzugeladen werden um Werte zu vergleichen.
Hier soll eben die Auswahl erfolgen, ob und wenn ja welche Monate hinzugefügt werden..
Top
#17
@Fennek:

ob du mir vielleicht ein kleines Beispiel erstellen könntest mit deinem Script? Verstehe es nämlich gerade noch nicht...
Top
#18
Hallo,

lasse den Code in einem neuen, leeren Sheet laufen. Den Range von A1:A12 zu ändern, sollte kein Problem sein.

Versuche die Caption unterhalb zu setzen.

mfg
Top
#19
Hi,

ok in einem leeren Sheet funktioniert er tatsächlich. Dann muss ich schauen woran es bei mir liegt. Ok.


Und wie gebe ich nun an mein Makro den bzw. die jeweilig angeklickten Checkbox Namen weiter??
Top
#20
Hallo,

es ist wohl nicht möglich den Text UNTER die ChkBx zu schreiben.

Dies wäre ein Ansatz: (wähle den für dich richtigen Range)

Code:
Sub Anlegen()
Dim Ole As OLEObject

With Range("B2:C7")
    .EntireColumn.ColumnWidth = 12
    .Select
End With

For Each c In Selection
    
    Set Ole = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
            DisplayAsIcon:=False, Left:=c.Left, Top:=c.Top, Width:=11, Height _
            :=15)
   Ole.ShapeRange.ScaleWidth 2.5, msoFalse, _
        msoScaleFromTopLeft
    i = i + 1
    MM = Application.GetCustomListContents(8)(i)
     Ole.Name = MM
      Ole.Object.Caption = MM
   If Ole.TopLeftCell.Column Mod 2 = 0 Then
            Ole.Object.Alignment = 0
    Else
        Ole.Object.Alignment = 1
    End If
Next c
End Sub

Es darf nur 12 ChkBx geben, also zuerst alle löschen:

Code:
Sub T_3()
Dim Ole As OLEObject

For Each Ole In ActiveSheet.OLEObjects
    Ole.Delete
Next Ole
End Sub

Eine kleine Änderung in deinem Design wird nötig.

mfg
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste