Hallo,
ich bin auch der Meinung, dass du mit Formeln besser dran bist, als mit VBA.
Ich würde (wahrscheinlich) die Spalte "Volumen" hinzufügen. Dann kannst du dort das Volumen berechnen:
=WENN(Q2=1;D2*E2*F2; WENN(Q2=2;PI()*(K2/2)*D2; WENN(Q2=...;....; ......))
Dann würde ich (wahrscheinlich) noch die Spalte "Material" oder die Spalte "Dichte" hinzufügen.
Dann berechnet sich das Gewicht aus Volumen * Dichte. Dann funktioniert die Tabelle auch noch, wenn du mal ne Aluplatte hast ....
Willst du keine Spalte hinzufügen, dann würde ich wenigstens die 0,00000785 in einen Namen (für Formeln) oder in eine Konstante (für VBA) packen. Dann kann man das sehr leicht auf ein anderes Material anpassen.
in VBA könnte das in etwa so aussehen:
Option Explicit
'Spalten
Const SP_LÄNGE As Integer = 4
Const SP_BREITE As Integer = 5
Const SP_HÖHE As Integer = 6
Const SP_WANDDICKE As Integer = 7
Const SP_AUSSENDURCHMESSER As Integer = 8
Const SP_INNENDURCHMESSER As Integer = 9
Const SP_SCHLÜSSELWEITE As Integer = 10
Const SP_DURCHMESSER As Integer = 11
Const DICHTE_STAHL As Double = 0.00000785 '[g/m^3]
Sub Beispiel()
Dim Zeile As Long
Dim Volumen As Double
Dim Gewicht As Double
Zeile = 2
Select Case Cells(Zeile, 17)
Case 1
Volumen = Cells(Zeile, SP_LÄNGE) * Cells(Zeile, SP_BREITE) * Cells(Zeile, SP_HÖHE)
Case 2
Volumen = ...
Case 3
Volumen = ...
Case Else
Volumen = 0
Gewicht = Volumen * DICHTE_STAHL
MsgBox Gewicht
End Sub
Die Spalten muss man nicht in Konstanten auslagern. Das könnte praktisch sein, ich bin aber auch nicht so ganz happy damit. Ich bin aber der Meinung, dass sich damit der Code besser liest und man beim lesen des Codes mitdenken kann. Ach ja, erhältst du in VBA mit application.worksheetfunction.pi()
Grüße, Ulrich
|