Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 24.11.2017
Version(en): 2016
Hey,
gar keine so dumme Idee
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"...
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 24.11.2017
Version(en): 2016
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?
Registriert seit: 24.11.2017
Version(en): 2016
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..
Registriert seit: 24.11.2017
Version(en): 2016
@Fennek:
ob du mir vielleicht ein kleines Beispiel erstellen könntest mit deinem Script? Verstehe es nämlich gerade noch nicht...
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 24.11.2017
Version(en): 2016
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??
Registriert seit: 06.12.2015
Version(en): 2016
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