AW: Zahl in Ergebnis umwandeln
20.07.2021 10:21:57
UweD
Hallo
Eine Eingabe von -0 wird von Excel sofort zu 0 umgewandelt, da es kein negatives Null gibt.
Ausweg:
- Die Eingabezellen müssen als Text formatiert sein.
- Mit dem nun abgeänderten Makro wird das Minus vorne erkannt.
- Auch habe ich die Prüfung auf 12er und 6er Zellverbund eingebaut
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' If Target.Address = Range("BX2") Then
' Call Modul3.LeerzeilenLoeschen_2
' End If
ActiveSheet.Unprotect
On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
'************** Normieren Ergebnisse
Dim RNG As Range, NeuWert As Variant, ZuWert As Integer
Dim VZ As Boolean, Mcount As Integer
Set RNG = Range("S40:AG100")
If Not Intersect(RNG, Target) Is Nothing Then
If Target.Count 1 Then
MsgBox "Fehler: Zellen einzeln ändern"
GoTo Fehler
End If
If Not IsNumeric(Target) Then
MsgBox "Fehler: Muß eine Zahl sein"
GoTo Fehler
End If
Mcount = Range(Target.MergeArea.Address).Count
If Target.MergeCells And (Mcount = 12 Or Mcount = 6) Then
NeuWert = Target
ZuWert = IIf(Abs(Target) >= 10, Abs(Target) + 2, 11)
VZ = IIf(Left(Target.Text, 1) "-", True, False) 'Vorzeichen
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
'Gruppierung aufheben
Target.MergeCells = False
If Mcount = 12 Then
'4er Grupierung 3x neu setzen
Target.Resize(4, 1).MergeCells = True
Target.Offset(0, 1).Resize(4, 1).MergeCells = True
Target.Offset(0, 2).Resize(4, 1).MergeCells = True
ElseIf Mcount = 6 Then
'2er Grupierung 3x neu setzen
Target.Resize(2, 1).MergeCells = True
Target.Offset(0, 1).Resize(2, 1).MergeCells = True
Target.Offset(0, 2).Resize(2, 1).MergeCells = True
End If
'Doppelpunkt in Mitte
Target.Cells(1, 2) = ":"
If VZ Then 'Positive Eingabe
Target.Cells(1, 1) = ZuWert
Target.Cells(1, 3) = NeuWert
Else 'Negative Eingabe
Target.Cells(1, 3) = ZuWert
Target.Cells(1, 1) = -NeuWert
End If
.EnableEvents = True
.Calculate
End With
Else
MsgBox "Fehler bei Verbunden Zellen! Keine 12er oder 6er Blöcke"
End If
End If
ActiveSheet.Protect
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
If Err.Number 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD