457 Aufrufe
Gefragt in Tabellenkalkulation von matthiasg Mitglied (183 Punkte)
Hallo,

habe leider zu wenig VBA Kenntnisse:

Wie bekomme ich das Makro zum laufen?

Wenn eine (verknüpfte) Zelle befüllt wird, soll eine Checkbox angezeigt werden, sonst nicht.

Private Sub CheckBox1_ausblenden()
If Target.Address = "$B$86" Then
If Range("B86").Value = "" Then
Shapes("CheckBox1").Visible = False
Else
Shapes("CheckBox1").Visible = True
End If
End If
End Sub

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Matthias,

du willst ja, dass die Checkbox automatisch ein- und ausgeblendet wird, wenn die Zelle B86 leer ist. Dann kannst du keine Sub nehmen, die du ja mit Hand starten musst. Außerdam funktioniert in deinem Code Target nicht,

Wenn du die Checkbox automatisch ein- und ausblenden willst, wenn sich der Wert in Zelle B86 ändert, musst du das Worksheet-Change-Ereignis nutzen. Der folgende Code gehört in das VBA-Projekt der betreffenden Tabelle:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Not Intersect(Target, Range("B86")) Is Nothing Then

        If Target.Value = "" Then
          CheckBox1.Visible = False
         Else
          CheckBox1.Visible = True
        End If

    End If

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Danke M.O. !

ein Worksheet-Change-Ereignis habe ich schon im gleichen Arbeitsblatt:

Sub Worksheet_Change(ByVal Target As Excel.Range)

[...]

Es wird eine Fehlermeldung angezeigt:

"Fehler beim kompilieren:

Mehrdeutiger Name: Worksheet_Change"

Wie gehe ich jetzt vor?
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Matthias,

du musst die beiden Ereignisse in einem Code zusammenfassen. Füge einfach den Teil

If Not Intersect(Target, Range("B86")) Is Nothing Then

        If Target.Value = "" Then
          CheckBox1.Visible = False
         Else
          CheckBox1.Visible = True
        End If

    End If

hinter dem vorhandenen Code (aber vor End Sub) ein.

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Hallo M.O.,

muss leider noch mal fragen. Bei Änderung des Zellinhalts passiert nichts...

In B86 steht die folgende Formel: =WENN(AG25<>"[bitte per Drop-Down auswählen]";AG25;"").

Wenn also "" als Wert in der Zelle steht, dass soll die Checkbox ausgeblendet sein.

Das gleiche soll übrigens dann auch in B87, B88 und B89 passieren.

:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$B$46" Then
Call InhaltChecken
End If

If Not Intersect(Target, Range("B86")) Is Nothing Then

        If Target.Value = "" Then
          CheckBox1.Visible = False
         Else
          CheckBox1.Visible = True
        End If

    End If
End Sub
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Matthias,

wenn eine Formel in der zu überwachenden Zelle steht, funktioniert die Worksheet-Change-Methode nicht. Dann muss z.B. die Zelle überwacht werden, auf die sich die Formel bezieht. Du kannst auch mehrere Zellbereiche überwachen (Beispiel);

 If Not Intersect(Target, Range("AG25:AG28,AF5,AT10")) Is Nothing Then

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)

Dankeschönyes smiley          M.O.

  

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

gern geschehen smiley.

Gruß

M.O.

...