Das Blatt ist geschützt, die Zellen A1 und B1 sind nicht gesperrt, B1 ist als "Standard" formatiert.
In A1 steht der Geldbetrag, in B1 der Zinsfuß, in C1 die Formel für das Ergebnis (A1*B1%/100).
Wird nun in B1 als Zinsfuß statt NUR der Ziffer 5 ein nachgestelltes %-Zeichen (5%) eingegeben, wird B1 automatisch umformatiert zu "Prozent". Bei einer erneuten Eingabe der Ziffer 5 in B1 steht in B1 der Wert 500%! Das Ergebnis in C1 bleibt zwar dasselbe, nur stimmt dann nicht mehr die Gleichung. B1 läßt sich auch nicht wieder in "Standard" formatieren, da das Blatt gesperrt ist.
Versuche mit der Gültigkeitsprüfung Daten|Gültigkeit|Dezimal|min=0,1 max=1000 od. 100 scheitern insofern, dass Eingaben wie 2.3, 2%, 2,5% zwar abgefangen werden - aber nicht 20% oder 300%!! Bei zweistelligen Werten wie bei den beiden letzten genannten, versagt die Gültigkeitsprüfung und B1 wird wieder in Prozent formatiert.
Abfangen per Code scheitert an »Zelle.NumberFormat = "General"«. Ist das Blatt nicht geschützt, funktioniert alles bestens.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Abfrage, weil als "Standard" ("General") formatierte Zellen
' durch Eingabe eines %-Zeichens in "Prozent" und
' durch Eingabe eines (.) in "Datum" formatiert werden.
Dim Zelle As Range
For Each Zelle In Range("C11:F15")
If Not Zelle = "" And _
Not IsNumeric(Zelle) Then
Beep
dlgAbfrProzent.Show
'InhaltLöschen
Zelle = ""
Zelle.NumberFormat = "General"
Zelle.Activate
ElseIf Not Zelle.NumberFormat = "General" Then
Beep
dlgAbfrProzent.Show
'InhaltLöschen
Zelle = ""
Zelle.NumberFormat = "General"
Zelle.Activate
End If
Next
End Sub
Sub InhaltLöschen()
Dim Zelle As Range
' Fehlermeldung: "Laufzeitfehler '91': Objektvariable oder
' With-Blockvariable nicht festgelegt.
Zelle = ""
Zelle.NumberFormat = "General"
Zelle.Activate
End Sub
Weiß jemand Abhilfe (außer Blattschutz aufheben)?
Gruß Rainer