Anzeige
Archiv - Navigation
1572to1576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

variable Checkbox Nachbarzelle

variable Checkbox Nachbarzelle
02.08.2017 13:37:55
Lisa
Hallo zusammen,
in meinem Tabellenblatt habe ich variable Checkboxen.
dazu hilft mir dieser Code von Rudi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim oChk As OLEObject
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A2:A50")) Is Nothing Then
For Each Zelle In Intersect(Target, Range("A2:A50"))
For Each oChk In ActiveSheet.OLEObjects
If oChk.TopLeftCell.Address = Zelle.Offset(, 11).Address Then
oChk.Delete
End If
Next oChk
If Zelle.Value = "" Then
Else
Set oChk = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
Link:=False, DisplayAsIcon:=False)
With oChk
.Left = Zelle.Offset(, 11).Left + 1
.Top = Zelle.Top + 1
.Object.Caption = ""
.Interior.ColorIndex = xlNone
End With
End If
Next Zelle
End If
End Sub
Hierzu möchte ich beim anhaken der Checkbox rechtsseitig der Checkbox einen Eintrag in der Zelle erzeugen.
Hat jemand hierzu eine Idee oder Ansatz wie ich dies erreiche?
Liebe Grüße Lisa

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variable Checkbox Nachbarzelle
02.08.2017 14:27:28
mmat
Das ist ganz einfach ;-) du brauchst ein Sub im Code des Arbeitsblatts, das beim Klicken auf die Checkbox ausgeführt wird. Z.B.
Private Sub CheckBox1_Click()
Range ("Nebendran")="Irgendwas"
End Sub

AW: variable Checkbox Nachbarzelle
02.08.2017 14:48:39
Lisa
Hallo mmat, danke für die Antwort.
hier müsste ich aber die Range definieren also die Zelle.
Diese ist aber unbestimmt, da sich die Checkbox mal in der Zeile 1 oder auch der Zeile 20 befinden kann.
Das Changeereignis löst ja aus, dass je nach dem in welcher Zeile ich die Zelle in Spalte A ändere, eine Checkbox in genau dieser Zeile in Spalte J eingefügt wird.
Hier kann ich also nicht angeben zu welcher Checkbox welche Zeile gerade aktiv ist.
zur Erklärung anbei einen Testdatei.
https://www.herber.de/bbs/user/115172.xls
Liebe Grüße Lisa
Anzeige
AW: variable Checkbox Nachbarzelle
02.08.2017 15:05:13
Lisa
sorry, ich hatte diesen Thread als nicht offen vermerkt.
das sei jetzt nachgeholt und wahrscheinlich doppelt zu sehen.
Liebe Grüße Lisa
AW: variable Checkbox Nachbarzelle
02.08.2017 15:05:14
Lisa
sorry, ich hatte diesen Thread als nicht offen vermerkt.
das sei jetzt nachgeholt und wahrscheinlich doppelt zu sehen.
Liebe Grüße Lisa
AW: variable Checkbox Nachbarzelle
02.08.2017 15:11:15
mmat
Hallo Lisa,
das war mir schon klar.
Du brauchst für jede Tscheckbox, die du vielleicht mal erzeugst, eine Ereignisbehandlung (siehe oben), deren Name sich aus dem Checkboxnamen und dem Literal "_click" zusammensetzt. Diese Ereignisbehandlung muß zum Zeitpunkt der Checkboxerzeugung bereits existieren oder per Makro erzeugt werden.
Da jede Checkbox so ihre eigene Ereignisbehandlung verpasst bekommt kann man leicht auf so Feinheiten wie die Definition was "nebendran" eigentlich bedeutet eingehen.
Von wievielen Checkboxen reden wir maximal ?
vg, MM
Anzeige
AW: variable Checkbox Nachbarzelle
03.08.2017 10:09:55
Lisa
Hallo MM, irgendwie ist meine Antwort verschollen.
Vielen Dank für deine Antwort und Erklärung. Es handelt sich um ca. 20 Checkboxen.
Liebe Grüße Lisa
AW: variable Checkbox Nachbarzelle
03.08.2017 12:27:18
Lisa
Hallo MM, manchmal ist es gut wenn man etwas Zeit hat und selbst recherchieren und probieren kann.
Somit habe ich die Lösung wie folgt gestaltet.
Dim i As Long
For i = 1 To 4
If Worksheets("Tabelle1").OLEObjects("Checkbox" & i).Object Then
'MsgBox ActiveSheet.OLEObjects("Checkbox" & i).TopLeftCell.Address '##von hieraus, also der Adressfindung, bin ich dann auf meine Lösung gekommen.
ActiveSheet.OLEObjects("Checkbox" & i).TopLeftCell.Offset(0, 2) = "1"
End If
Next
Vielen Dank und Liebe Grüße
Anzeige
AW: variable Checkbox Nachbarzelle
03.08.2017 12:45:17
mmat
Hallo Lisa
das hört sich so an als wäre das schon die Lösung, ganz ohne Ereignisbehandlung.
Respekt!
Sach Bescheid, wenn du noch was brauchst.
vg, MM
AW: variable Checkbox Nachbarzelle
03.08.2017 13:24:12
Lisa
Hallo MM,
das Ereignis ist doch, das bei aktivierter Checkbox,die 1 in die zweite Zelle neben der gefundenen Zelle, auf die die Checkbox liegt, geschrieben wird.
Das ganze packe ich in ein Worksheet Ereignis zur Ausführung.
Meinst du das oder welche Ereignisbehandlung?
Das ganze funktioniert, solange ich die Anzahl der Objekte definiere.
Dim i As Long
For i = 1 To 4
Jetzt nachdem ein Objekt dazu gekommen ist, läuft der Code auf einen Debugger. Das hatte ich nicht berücksichtigt.
Nun bin ich auch schon wieder am Ende.
Wie muss der Code denn umgeschrieben werden, wenn die Anzahl nicht bekannt ist?
Liebe Grüße Lisa
Anzeige
AW: variable Checkbox Nachbarzelle
03.08.2017 14:50:18
mmat
Hallo Lisa,
ich fass das mal zusammen:
- Der Anwender ändert irgend eine Zelle im Bereich A2:A50 (also potentiell 49 Eingabefelder)
- Wenn dann in der Zelle was drinsteht, möchtest du in dieser Zeile, Spalte L eine Checkbox erzeugen
- Wenn der Anwender den Haken in dieser Checkbox setzt, dann erscheint rechts daneben (Spalte M) ein Wert.
Hab ich das soweit richtig kapiert?
vg, MM
AW: variable Checkbox Nachbarzelle
03.08.2017 15:06:31
Lisa
Hallo MM, auf den Punkt gebracht, ja so soll es sein.
Liebe Grüße Lisa
AW: variable Checkbox Nachbarzelle
03.08.2017 15:18:06
mmat
Dann hier mein Code. Du musst nur noch viele, viele "Hakenkisten_clicks" hinzufürgen, für jede Zeille A2:50 eine ...
I Hope it helps
Option Explicit
Function Ole_Exists(name As String) As Boolean
Dim oChk As OLEObject
Ole_Exists = False
For Each oChk In ActiveSheet.OLEObjects
If oChk.name = name Then Ole_Exists = True: Exit Function
Next
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, r As Long, s As String
Dim oChk As OLEObject
If Intersect(Target, Range("A2:A50")) Is Nothing Then Exit Sub
For Each Zelle In Intersect(Target, Range("A2:A50")) 'Liefert einen Range wo Target und der  _
andere sich überschneiden
r = Zelle.Row
s = "Hakenkiste" & CStr(r)
If Ole_Exists(s) Then OLEObjects(s).Delete
If Zelle.Value  "" Then
Set oChk = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False,  _
DisplayAsIcon:=False)
With oChk
.Left = Zelle.Offset(0, 11).Left + 1
.Top = Zelle.Top + 1
.Object.Caption = "Guckste"
.Interior.ColorIndex = xlNone
.name = "Hakenkiste" & CStr(r)
End With
End If
Next
End Sub
Sub Hakenkiste2_click()
If Hakenkiste2 Then Cells(2, 13) = "Wert" Else Cells(2, 13) = ""
End Sub
Sub Hakenkiste3_click()
If Hakenkiste3 Then Cells(3, 13) = "Wert" Else Cells(3, 13) = ""
End Sub
Sub Hakenkiste4_click()
If Hakenkiste4 Then Cells(4, 13) = "Wert" Else Cells(4, 13) = ""
End Sub

Anzeige
AW: variable Checkbox Nachbarzelle
04.08.2017 10:53:56
Lisa
Hallo MM, das ist Spitzenklasse, danke, genau wie gewünscht.
Vielen Lieben Dank für deine Zeit und Bemühungen.
Liebe Grüße Lisa

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige