Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten 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..
Antworten Top
#17
@Fennek:

ob du mir vielleicht ein kleines Beispiel erstellen könntest mit deinem Script? Verstehe es nämlich gerade noch nicht...
Antworten 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
Antworten 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??
Antworten 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
Antworten Top


Gehe zu:


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