Eigentlich will ich doch nur die Breite eine Spalte ermitteln – wenn da nicht der Parameter wäre…
Da als Spaltenindex sowohl eine Zahl als auch eine Buchstabenkombination angegeben werden können, soll der Parameter für die Spalte vom Typ Variant sein, doch da ist viel Unheil möglich. Selbst wenn es sich dabei um einen Integer, Long oder String handelt, kann auch noch der Wert selbst falsch sein. So ist „ABC“ ein gültiger Spaltenindex, „ABBA“ aber nicht.
Public Function getWidth(oWs As Worksheet, vColumn As Variant) As DoubleConst ciTypEmpty As Integer = 0Const ciTypNull As Integer = 1Const ciTypObject As Integer = 9Const csFunction As String = "modExcel.getWidth()"Const ciMinErrNumber As Integer = 1000Const ciTypeError As Integer = 13Const csTypeError As String = _"Der übergebene Parameter kann nicht als Spaltenindex interpretiert" & _" werden. Übergeben wurde: "Const ciErrArgumentNull As Integer = 20Const csErrArgumentNull As String = _"Statt Spaltenindex NULL übergeben."Const ciUnbekanntErr As Integer = 23Dim sFehler As String, iNummer As Long, sDescription As StringDim iTyp As IntegerOn Error GoTo FehleriTyp = VarType(vColumn)If iTyp = ciTypEmpty Or iTyp = ciTypNull Or iTyp = ciTypObject Then _Err.Raise Number:=ciErrArgumentNull + ciMinErrNumber + vbObjectError, _Source:=csFunction, _Description:=csErrArgumentNullgetWidth = oWs.Columns(vColumn).WidthEnde:On Error GoTo 0Exit FunctionFehler:sDescription = Err.DescriptioniNummer = Err.NumberOn Error GoTo 0If iNummer = ciTypeError ThensFehler = csTypeError & CStr(vColumn)iNummer = ciTypeError + ciMinErrNumber + vbObjectErrorErr.Raise Number:=iNummer, Source:=csFunction, _Description:=sFehlerElsesFehler = "Ein unbekannter Fehler wurde ausgelöst." & _"Womöglich war der Spaltenindex ungültig. Meldung: " & _sDescriptioniNummer =iNummer + ciMinErrNumber + vbObjectErrorErr.Raise Number:=iNummer, Source:=csFunction, _Description:=sFehlerEnd IfGoTo EndeEnd Function
Der gewünschte Abgabewert wird einzig und allein in Zeile 27 ermittelt, der ganze Rest ist Fehlerbehandlung.
Bonuspunkte für jede(n), der oder die erkennt, dass der Mumpitz nicht mal wiederverwendbar ist.

