347 Aufrufe
Gefragt in Tabellenkalkulation von matthiasg Mitglied (183 Punkte)

Hallo,

mein Makro funktioniert so leider nicht! Hat jemand eine Idee? Wenn die Checkbox angehakt wird, soll in der Zelle C14 keine Formel stehen, die mit =Cxxxx_copy beginnt.

Das Makro Fehlermeldung funktioniert; wenn ich dir If Bedingung verkürze, dann auch.


Private Sub CheckBox1_Click()

If CheckBox1.Value = True And Left(Range("C14").Formula, 11) = "=Cxxxx_copy" Then 'Zelle enthält Bezug auf C_Copy
Call Fehlermeldung_xxx
CheckBox1.BackColor = &HFF& 'rot
End If

End Sub

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Bearbeitet von m-o

Hallo Matthias,

was funktioniert denn nicht??

Dein Makro funktioniert, wenn in Zelle C14 z.B. die folgende Formel steht: =Cxxxx_copy!A2

Wenn in C14 aber z.B. diese Formel steht

="Das Ergebnis ist: " & Cxxxx_copy!A2

klappt das natürlich nicht.

Dann muss der Code wie folgt aussehen:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True And InStr(1, Range("C14").Formula, "Cxxxx_copy") Then
   Call Fehlermeldung_xxx
   CheckBox1.BackColor = &HFF& 'rot
End If

End Sub

Ansonsten beschreibe mal genauer, was nicht klappt bzw. wie das Makro funktionieren soll.

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)

Hallo M.O.,

also: in C14 steht entweder eine Formel die mit =Cxxxx_copy beginnt oder eine andere Formel. Wenn =Cxxxx_copy!C5 drin steht, dann wird natürlich nicht die Formel, sondern der Wert angezeigt.

Allerdings darf (logisch) bei aktivierter Checkbox diese Formel nicht drin stehen, daher soll dann eine Fehlermeldung angezeigt werden.

Meine Idee war, dass überprüft wird, ob die Checkbox aktiviert ist und diese Formel in C14 steht.

Das Makro läuft zwar, erkennt aber nicht, dass in C14 diese Formel enthalten ist. Auch nicht nach der Anpassung mit InStr

If CheckBox1.Value = True And InStr(1, Range("C14").Formula) = "=Cxxxx_copy!C5" Then

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

Hallo Matthias,

du benutzt INSTR falsch. Kopiere den Code aus meiner ersten Antwort in dein Makro und schaue mal nach, ob der Code dann so funktioniert wie du willst.

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)

Hallo M.O.,

das Makro erkennt nicht, dass die Bedingung erfüllt ist - sieht so aus:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True And InStr(1, Range("C14").Formula, "Cxxxx_copy") Then
Call Fehlermeldung_xxx
CheckBox1.BackColor = &HFF& 'rot
End If

End Sub

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)

Hallo M.O.,

danke Dir noch mal VIELMALS für die Hilfe. Habe probiert und mit Angabe der Zelle funktioniert das Makro!

Private Sub CheckBox1_Click()

If CheckBox1.Value = True And InStr(1, Range("E14").Formula, "=Cxxxx_copy!C5") Then
Call Fehlermeldung_xxxx
CheckBox1.BackColor = &HFF& 'rot
End If

End Sub

...