Nuevamente fer

Que tal fer quería ver si me puedes explicar un poco más lo que te pregunte en la cuestión anterior, no lo entendí muy bien por que lo pegue y me manda muchos errores gracias

1 respuesta

Respuesta
1
Hubiera ayudado que mencionaras qué tipo de errores o qué mensajes da al ejecutar. ¿O tengo que adivinarlos?
Principalmente, deberías controlar que los nombre de los controles incluidos en mi macro coinciden con los que tienes en tu formulario. De hecho la segunda etiqueta no la tenías originalmente. Debes agregar una a tu formulario y eliminar la segunda Caja de texto, pues no la usarás.
También tenías que informarle el rango de la tabla de datos *en la hoja desde donde disparas la macro*
Según mi macro, los controles disponibles son:
Combobox1
TextBox1
Label1
Label2
Si tuvieran diferentes nombres, o los reemplazas en la macro o renombras tus objetos...
Ahora te detallo, los pasos de la macro:
'Declara variables:
Public vPrecio
Public Tabla
'Al aparecer el formulario:
Private Sub UserForm_Activate()
'indica aquí el rango de tu tabla:
Tabla = "C5:D19"
'Esta instrucción carga los elementos del Combo desde el rango de la hoja que indicaste en la linea anterior.
ComboBox1.RowSource = Tabla
'Esto deja en blanco las etiquetas:
Label1.Caption = ""
Label2.Caption = ""
End Sub
'Se dispara al seleccionar un item del Combobox:
Private Sub ComboBox1_Change()
'Esta función deja en una variable el resultado de un BUSCARV sobre el artículo seleccionado en el combo:
vPrecio = Application.WorksheetFunction.VLookup(ComboBox1, Range(Tabla), 2, 0)
'Muestra en la etiqueta 1 el valor encontrado en la tabla, dandole un formato de moneda con dos decimales (recuerda lo del separador de decimales)
Label1.Caption = Format(vPrecio, "$ 0.00")
'Ejecuta la subrutina Total (más abajo) encargada de multiplicar precio por cantidad:
Total
'Pasa el cursor a la casilla de Cantidades:
TextBox1.SetFocus
End Sub
'Se ejcuta al salir de la casilla de Cantidades:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Ejecuta la subrutina Total (más abajo) encargada de multiplicar precio por cantidad:
Total
End Sub
'Subrutina de cálculo de Total (Precio x cantidad)
Private Sub Total()
'Evalua si el Textbox1 (cantidades) está vacío:
If Len(TextBox1.Value) Then
'Si tuviera dato, muestra en la etiqueta 2 el resultado de Precio por Cantidad, dandole un formato de moneda con dos decimales y separador de miles. (recuerda lo de los separadores):
Label2.Caption = Format(vPrecio * Val(TextBox1.Value), " $ #,###.00")
'Si estuviera vacía, muestra un mensaje en la segunda etiqueta:
Else
Label2.Caption = "Ingrese cantidad en casilla"
End If
End Sub
Bueno, Diego, no es tan complicado como parece.
Tal vez te convenga probar la macro en un archivo nuevo para evitar conflictos con macros y formularios preexistentes. Una vez que entiendas cómo funciona podrás adaptarlo a tu proyecto original.
Gracias fer pero me sigue mandando errires en la primera parte donde pones el rango de la tabla y luego en la parte de Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) de todos modos gracias dejame analizarlo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas