1.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,

ich habe folgende Problemstellung:

Ich habe 5 Checkboxen in einer Tabelle (Home), welche durch klicken in den Zellen L12:L16 den Wert "WAHR" und "FALSCH" bei leer zurückgeben.

Auf die Ergebnisse in der Spalte L baut dann an weiteres Makro auf.

Jetzt [xurl=http://jamaipa.de|Jamaipa - Suche ohne Spam und Shops]suche[/url] ich nach einer Lösung, welche es ermöglicht die Checkboxen in Abhängigkeit eines Formelergebnisses vorzubefüllen.

Konkret für jede einzelne Checkbox:
Wenn in Zelle J12:J16 Ergebis "1", dann Checkbox ausgewählt, bei "0" leer.

Somit hätte der Anwender eine  Vorauswahl, aber zudem die Möglichkeit auch manuell per Checkbox auszuwählen.

Ich hoffe ihr könnt mir folgen und könnt mir weiterhelfen? :)


Viele Grüße,
David

13 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo David,

versuch mal den folgenden Code:

[code]Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range

If Not Intersect(Target, Range("M4")) Is Nothing Then
 For Each rngZelle In Range("J12:J30")
   If rngZelle.Value > 0 Then
        ThisWorkbook.Worksheets("Home").OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = True
      Else
        ThisWorkbook.Worksheets("Home").OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = False
   End If
 Next rngZelle
End If

End Sub[/code]

Natürlich kannst du auch die Checkboxen per Hand wählen. Änderst du aber in der Steuertabelle wieder die Zelle M4, dann werden die Checkboxen entsprechend den Eintragen in den Zellen J12 bis J30 zurückgesetzt.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

ich glaube jetzt sind wir ganz nah dran!!! :)

Frage (entschuldige die folgende laienhafte Beschreibung) :

Muss man dem Makro nicht sagen, das hier
[i]For Each rngZelle In Range("J12:J30")[/i]
in der Tabelle "Home" geschaut werden muss?

Bis dato  sprechen wir es erst in der Folge an:
[i]ThisWorkbook.Worksheets("Home").OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = True
Else
ThisWorkbook.Worksheets("Home").OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = False[/i]

Momentan funzt es nämlich noch nicht.
Die Werte 0 & 1 müssen hier als "Zahl" kommen oder?

Viele Grüße,
David
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo David,

stimmt, dass hatte ich übersehen.
Hier der angepasste Code:

[code]Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZelle As Range

If Not Intersect(Target, Range("M4")) Is Nothing Then
 With ThisWorkbook.Worksheets("Home")
  For Each rngZelle In .Range("J12:J30")
   If rngZelle.Value > 0 Then
        .OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = True
      Else
        .OLEObjects("CheckBox" & rngZelle.Row - 11).Object.Value = False
   End If
  Next rngZelle
 End With
End If

End Sub[/code]

Gruß

M.O.
...