Inputboxabfrage für Dezimalstellen/ Abbrechen
18.02.2008 18:20:00
Andreas
ich habe es geschafft, über die Inputbox den User zu fragen, wie viele Dezimalstellen er in seinen Pivot Datenfeldern haben möchte. Problem ist nun, daß die application.inputbox offensichtlich das Abbrechen der Eingabe über den entsprechenden Button und die Eingabe einer 0 gleichsetzt. Wenn 0 eingegeben wird, soll es 0 Dezimalstellen geben. Wenn der User Abbricht, dann raus aus dem Makro und alle Dezimalstellen so lassen, wie sie sind. Der Errorhandler funktioniert nicht so wie er sollte. Was ist zu tun, damit 0 und abbrechen sauber auseinander gehalten werden. Das muß doch möglich sein. Eine 0 ist schließlich auch eine Eingabe und nicht per se ein Fehlerwert a la False
Sub formatPivot(pvtable As PivotTable)
Dim pvField As PivotField, dezmal As Long, digits As String
On Error GoTo ERRORHANDLER
dezmal = Application.InputBox("Enter digits:" & vbLf & "Abort will leave Pivot Formatting.", " _
Digits", 2, Type:=1) 'Inputbox mit Type 1 laesst nur Zahlen als Eingabe zu.
' If dezmal = False Then Exit
Sub 'Ich fange alles global über den _
Errorhandler ab
If dezmal = 0 Then
digits = "#,##0"
Else: digits = "#,##0." & Application.WorksheetFunction.Rept(0, dezmal)
End If
For Each pvField In pvtable.DataFields
pvField.NumberFormat = digits
Next
ERRORHANDLER:
End Sub
Zweite Frage: Ist mein Konstrukt für die Dezimalstellenermittlung so OK? Ich habe es mir komplett selber ausgedacht und nicht so recht sicher, ob das das Optimum ist oder ob es eine passendere Funktion/ Weg gibt, auf den ich nicht gekommen bin.
Dank und Gruß, Andreas Hanisch