Curry ist auf Tour!

Posted by Intagrate Lite
Excel VBA – wenn man mich nicht aufhält..
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.
Kaufrausch
Im Gartencenter verfallen wir leicht in einen Kaufrausch…

Unten rechts ist eine kleine Gurke zu sehen; in der Zwischenzeit konnten wir schon die ersten der leckeren Früchte ernten.
Diese rankende Pflanze kommt tapfer jedes Jahr wieder
Unsere lila Clematis kommt tapfer jedes Jahr wieder; dabei möchte ich doch dort was anderes pflanzen…

Leider habe ich das Bild mit meinem Handy aufgenommen; daher eher nicht soo schön.
Hornveilchen 2020
Ein fester Bestandteil unseres Gartens sind Hornveilchen (aka viola cornuta).
Dieses Jahr habe ich auch eine Auswahl an Farben verzichtet und nur diese blau-weißen Blüten mit etwas gelb gewählt.

25000 Primzahlen mit MS Word und VBA
Aus Langeweile habe ich ein Word-Makro geschrieben, welches die ersten 25000 Primzahlen berechnet. Die Primzahlen werden ans Ende eines Worddokuments geschrieben.
Womöglich ist es ja für den einen oder die andere von Interesse… ;-)
Option ExplicitSub Primzahlen()Const ciMax As Integer = 25000 ' 25000 PrimzahlenDim aPrimzahlen() As LongDim iPruefling As Long, iIndex As IntegerDim iAnzahl As Long ' Long, damit die Funktion "inc" funktioniert.Dim bTeilbar As Boolean, oParagraf As ParagraphDim iWurzel As LongiAnzahl = 0iPruefling = 2ReDim aPrimzahlen(1 To ciMax)While iAnzahl < ciMaxbTeilbar = FalseiWurzel = Round(Sqr(iPruefling), 0) + 1 ' Plus 1 wegen eventuellem AbrundenFor iIndex = 1 To iAnzahl' Es reicht, bis zur Quadratwurzel des Prüflings zu testen.If aPrimzahlen(iIndex) >= iWurzel ThenExit ForEnd IfIf iPruefling Mod aPrimzahlen(iIndex) = 0 ThenbTeilbar = TrueExit ForEnd IfNextIf Not bTeilbar Theninc iAnzahlaPrimzahlen(iAnzahl) = iPrueflingEnd Ifinc iPrueflingWendFor iIndex = LBound(aPrimzahlen) To UBound(aPrimzahlen)Set oParagraf = ActiveDocument.Paragraphs.Add(ActiveDocument.Paragraphs.Last.Range)oParagraf.Range.Text = CStr(aPrimzahlen(iIndex)) & vbCrLfSet oParagraf = Nothing ' Nötig; nur: Warum?NextEnd SubSub inc(ByRef iZahl As Long)iZahl = iZahl + 1End Sub
Eine unserer Rosen, vom Frost gezuckert
Da der Winter 2019/2020 sehr mild war, wussten einige unserer Pflanzen nicht, ob sie überwintern oder blühen sollten.
Und so kam es zu diesem Bild, wo plötzlich einsetzender Frost die Rosenblüte verzuckerte.
Dies ist wieder ein Bild mit einer FX-Kamera und einem DX-Objektiv. Bei dem Thema habe ich das Engelchen und das Teufelchen auf den Schultern: Einerseits hätte ich ja gerne ein FX-Makro, doch andererseits ist das Micronikkor 1:3,5 / 85mm sehr gut.
Schwierig!
(Und ja, Nikon nennt seine Makroobjektive Micronikkore.)

Mango ist begeistert!
Mango ist begeistert, ist doch sein bester Hundekumpel Teo (hinten rechts; unscharf 😉) zu Besuch.
Hier zeigt das gute und doch günstige Nikkor 1:1,8/50mm seine Stärke als Hundeportraitlinse: Einerseits wird das „Gesicht“ gut vom Hintergrund abgehoben; andererseits bleibt die Schnauze plastisch und nicht so flach wie einst beim 1:2,8/180mm. Und Mango bleibt jetzt brav sitzen, wenn ich ihn fotografieren will.

Die hügelige Landschaft auf Ameland
Mit Mina auf Ameland
Mina bittet geduldig auf die Aufmerksamkeit ihres Menschen…
Wir waren mit zwei Freunden/Verwandten und ihren zwei Hunden auf Ameland, doch obwohl ich über einhundert Fotos schoss, sind kaum welche was geworden: Die Coolpix P6000 ist für flinke Hunde zu langsam.
Mina erbittet besseres Wetter und Leckerchen


