Formularsteuerelemente verstecken wenn Zelle leer
#11
Hallo nochmal,

schön dass hier so fleißig weiter diskutiert wurde.

Habt mir sogar noch n cleveren Tipp gegeben, wahrscheinlich ohne es zu wollen. Euren Antworten entnehme ich, dass man die Checkboxen mit einer Zelle 'verknüpfen' kann. Also nicht 'linked cell', in der dann der Wert 'true' oder 'false' der Checkbox widergegeben wird, sondern positionieren, dass die Checkbox immer in der gleichen Zelle ist.

Wie geht das?

Vielen Dank schon mal für eure Antwort(en)

VG

Travis5002
Top
#12
Hallöchen,

Du kannst z.B. den Checkboxen die top - und left - Eigenschaft einer Zelle mitgeben, z.B. im Prinzip
check1.left=cells(1,1).left+1
check1.top=cells(1,1).top+1
Damit wäre die obere linke Ecke in der Zelle und der andere Code würde funktionieren.
Beim Steuerelement formatieren kannst Du dann noch mitgeben, dass die Position von der Zelle abhängig ist.
Wenn aber jemand manuell die Position verändert, dann ist sie eben weg.

Alternativ könntest Du über linkedcell die verlinkte Zelle herausbekommen und die Checkbox dazu positionieren
check1.left=Range(Check1.LinkedCell).left+1
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#13
Hi,

(18.01.2016, 23:12)schauan schrieb: check1.left=cells(1,1).left+1
check1.top=cells(1,1).top+1

und das +1 ist, damit das nicht genau auf der Kante der Zelle sitzt?!
Top
#14
Hallo Zusammen,

leuchtet mir noch nicht so richtig ein :92:  .

Es handelt sich ja im Formularsteuerelemente, also keine Active X Schaltflächen. Wo hinterlege ich dann den angegebenen Code? Auf den Commandbutton?

VG und Vielen Dank!
Top
#15
Hallo Travis,

unten stehnden Code einmal ausfüheren, dann sind die Boxen Ein-und Ausgerichtet. Siehe Kommentare im Code.


Code:
Sub Chekboxen_Platzieren_und_groeße_anpassen()
  Dim chkElement As CheckBox
  For Each chkElement In ActiveSheet.CheckBoxes
    chkElement.Top = Range(chkElement.LinkedCell).Top  'Oberer Rand; LinkedCelle oberer Rand +1
    chkElement.Left = Range(chkElement.LinkedCell).Offset(0, 3).Left + 1 'linksausrichtung; linker Rand aus Zelle von LinkedZelle 3 Spalten nach rechts versetzter Zelle
    chkElement.Height = Range(chkElement.LinkedCell).Cells.Height - 2  'Höhe, Höhe der LinkedCell -2
  Next
End Sub

Die Zahlen +1, -2 kannst Du Deinen Wünschen entsprechend anpassen.
Gruß Atilla
Top
#16
Hallo Ralf,

ja, dazu ist das gut. Da bist Du dann, wenn keiner was verschiebt, in der Zelle und mit TopLeftCell an der richtigen Adresse Wink
Siehe auch zwischenzeitliche Antwort von atilla, der damit für die Ausrichtung sorgt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#17
Hallo Attila, schauan,

Vielen Dank, hab den Code angepasst und ausgeführt, klappt wunderbar!

Schönen Gruß,

Travis5002
Top


Gehe zu:


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