Hallo Florian,
schön, dass es dir gefällt. Was du mit Format(Cdbl()) bezweckst ist mir zwar räselhaft, da bereits die Eingabe ausschließlich Zahlen und das Kommazeichen erlaubt, aber nun gut. Format nutze ich zumeist nur dann, wenn ich einen Tausenderpunkt haben will.
Das letzte Zeichen bei Höhe wird deshalb abgeschnitten, da du die 3 Zeichen " / " (Leer, Schrägstrich, Leer) durch das Zeichen doppelter Länge
vbcrlf ersetzt hast. In diesem Fall solltest du die erste Zeile nach
Next ze durch
Cells(z, 10) = Left(LBH, Len(LBH) - 2) ersetzen, also nur 2 statt 3 Zeichen am Ende des Strings abschneiden.
Ich verwende statt
vbCrLf lieber das Zeichen
Chr(10) auch bekannt unter dem Namen vbLf. Damit wird (zumindest in Excel) ebenfalls ein Zeilenumbruch erzeugt, ohne dass so ein häßlich langes Leerzeichen in der Formelleiste am Ende jeder Zeile auftaucht. Da dieses nur ein Zeichen einfacher Länge ist, reicht es wenn du am Ende des Strings nur 1 Zeichen
Cells(z, 10) = Left(LBH, Len(LBH) - 1) abziehst.
Der String bei den Gewichten ist genauso aufgebaut wie der String für die Maße. Auch dort musst du " / " durch vbLf ersetzen und am Ende Left(Tn, Len(Tn) - 3) durch Left(Tn, Len(Tn)
- 1) ersetzen.
Mit Colorindex weist du die Farbe zu, die in der aktuell ausgewählten Farbpalette an Position 19 steht. Das muss nicht immer Rot sein. (Bei mir ist das z.B. gelb.) Wenn du sicher gehen willst nimm lieber die Color-Eigenschaft
ActiveCell.Interior.Color=255 Außerdem möchtest du nicht die aktive Zelle rot färben (welche sich aufgrund des Doppelklick wahrscheinlich in Spalte B befindet) sondern die Zelle
Cells(z,10)
Letzlich stürzt das Programm deshalb ab, weil versucht wird eine der unteren Leeren Zellen in einen Double-Wert umzuwandeln. Hier kannst du nur mit einer verschachtelten If-Bedingung oder der Switch-Funktion ran um das auszuschließen.
Zusammenfassend hier nochmal der betreffende Codeblock im Ganzen:
For ze = 1 To zeilen
If Artikel(ze).Info1 <> "" Then LBH = LBH & Format(CDbl(Artikel(ze).Länge), "0.00") & " x " & Format(CDbl(Artikel(ze).Breite), "0.00") & " x " & Format(CDbl(Artikel(ze).Höhe), "0.00") & vbLf
If Artikel(ze).Info1 <> "" Then Tn = Tn & Artikel(ze).Tons & vbLf
If Artikel(ze).Breite.Text <> "" Then
If CDbl(Artikel(ze).Breite.Text) > 3.01 Then rot = 1
End If
Next ze
If rot = 1 Then Cells(z, 10).Interior.Color = 255
Cells(z, 10) = Left(LBH, Len(LBH) - 1)
Cells(z, 22) = Left(Tn, Len(Tn) - 1)
Unload Me
Viele Grüße
Mr. K.