Como hago para cubicar en 4 campos numérico

Como se cubica en 4 campos que son numérico y 1 que da el total de m3.? Los campos se llaman unidad, largo, ancho, alto y totalmedicion

Private Sub Totalmedicion_GotFocus()
Totalmedicion = (Unidad) * (Largo) * (Ancho) * (Alto)

End Sub

Este es el código que tengo

3 Respuestas

Respuesta
2

Suponiendo que el campo Unidades es algo como m3, cm3 etc, y que el campo TotalMedición es texto, podrías ponerlo como

TotalMedicion=(Largo*ancho*alto) & " "& Unidad

de forma que te apareciera algo como

Totalmedicion= (3 *4*5) & " "& Unidad

TotalMedicion=60 m3

Hola Julián gracias por tu pronta respuesta, aplique lo que me dijiste y todo bien: pero tengo otro problema añadido, cuando utilizo solo  (largo por ancho) debería se un cuadrado m2.  no? pues no funciona creo que es debido ha que los campos  unidad, y alto están ha 0 ambos entonces me pregunto como puedo hacer m2. con esos mismo campos.?

En ese caso, tienes que usar la función NZ. Me explico, antiguamente esa función sólo transformaba los Nulos en Zeros. Pero ahora te lo transforma en los que quieras. Por ejemplo

TextoA=Nz([textob]) si textob es nulo TextoA=0

Pero

TextoA=nz([TextoB],1) Si texto B es nulo TextoA=1

Por eso, te aconsejaría que el que vaya a tener valor 0 lo dejes en blanco y poner la expresión como

TotalMedicion=(nz([Largo],1)*nz([ancho],1)*nz([alto],1) & " "& Unidad

Respuesta
1

El volumen de un objeto se calcula de forma diferente según su forma que puede ser cubica, cilíndrica, esférica o piramidal y para cada una de ellas hay una fórmula.

Si los objetos a cubicar (se deduce del contexto del mensaje) tienen forma cubica (su base es un cuadrado/rectángulo y proyección vertical) la fórmula aplicada es correcta, pero solo puede calcularse cuando se obtengan todas las medidas, y el evento adecuado 'después de actualizar' de la ultima medida.

Totalmedicion es un valor calculado, no se precisa guardarlo y de hacerlo habrá que recalcularlo en cuanto cambie una de sus dimensiones.

¿Qué finalidad tiene ese calculo?...

Si es una demostración, lo idóneo seria tener un combo con los diferentes cálculos y asociado a ellos la fórmula adecuada para lo que haría visibles los campos adecuados (y para mejor acabado se le cambiaría el titulo al campo que recibe el dato).

Para calcular el volumen de un deposito cilíndrico solo serian necesarios dos datos, el de la superficie del circulo (que se calcula en base al diámetro) y su altura.

Las formulas se visualizarían (es una demostración) y se ejecutarían en base aun clásico Select Case o bien con la función EVAL

Si es para guardar esos datos (por la causa que sea) añadiría uno más: el tipo de calculo (un recordatorio) por si en un futuro se modifica algún dato y no se desea recalcular uno a uno todos los registros afectados.

Respuesta
1

Siga el ejemplo de este procedimiento y reemplace los datos por los de su formulario

Sub CubicarCampos()
    Dim valor1 As Double
    Dim valor2 As Double
    Dim valor3 As Double
    Dim valor4 As Double
    Dim resultado As Double
    ' Asigna los valores de los campos numéricos
    valor1 = CDbl(Me.txtCampo1.Value)
    valor2 = CDbl(Me.txtCampo2.Value)
    valor3 = CDbl(Me.txtCampo3.Value)
    valor4 = CDbl(Me.txtCampo4.Value)
    ' Realiza la operación de cubicación
    resultado = valor1 * valor2 * valor3 * valor4
    ' Muestra el resultado en un cuadro de texto
    Me.txtResultado.Value = resultado
End Sub

¡Gracias! Eduardo todo perfecto lo de los m3. ; pero para m2. no me funciona porque creo que es al dejar algún campo ha 0 si es así como puedo solucionarlo?

Pruebe con este otro código

Private Sub btnCalcular_Click()
    Dim valor1 As Double
    Dim valor2 As Double
    Dim valor3 As Double
    Dim valor4 As Double
    Dim resultado As Double
    ' Asigna los valores de los campos numéricos
   If Nz(Me.txtCampo1.Value) <> 0 Then
      valor1 = CDbl(Me.txtCampo1.Value)
   Else
      MsgBox "Falta el valor del campo 1", vbCritical, "Le informo"
      Me.txtResultado.Value = 0
      Exit Sub
   End If
   If Nz(Me.txtCampo2.Value) <> 0 Then
      valor2 = CDbl(Me.txtCampo2.Value)
   Else
      MsgBox "Falta el valor del campo 2", vbCritical, "Le informo"
      Me.txtResultado.Value = 0
      Exit Sub
   End If
   If Nz(Me.txtCampo3.Value) <> 0 Then
       valor3 = CDbl(Me.txtCampo3.Value)
   Else
      MsgBox "Falta el valor del campo 3", vbCritical, "Le informo"
      Me.txtResultado.Value = 0
      Exit Sub
   End If
   If Nz(Me.txtCampo4.Value) <> 0 Then
      valor4 = CDbl(Me.txtCampo4.Value)
   Else
      MsgBox "Falta el valor del campo 4", vbCritical, "Le informo"
      Me.txtResultado.Value = 0
      Exit Sub
   End If
    ' Realiza la operación de cubicación
     resultado = valor1 * valor2 * valor3 * valor4
    ' Muestra el resultado en un cuadro de texto
    Me.txtResultado.Value = resultado
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas