Aunque hace ya muchos años que entró en vigor el euro, son muchas las personas, que cuando ven un precio o un importe en euros, hacen mentalmente la conversión a pesetas. ¿Por qué?. Pues porque han sido muchos años los que hemos convivido con la peseta, como para que nos olvidemos de ella de golpe. Especialmente, es la gente mayor la que más dificultades tiene para saber realmente el "valor" de un precio o de un importe en euros.
Para facilitar esta tarea de conversión -y también, porque esta semana no estaba my inspirado, y he tenido que echar mano del baúl de los recuerdos-, vamos a programar un sencillo conversor que nos servirá para convertir una cantidad en pesetas, a su contravalor en euros. De la misma forma, también podremos convertir una cifra en euros, a su contravalor en pesetas. Con alguna ligera adaptación, esto también nos puede servir, para convertir diferentes monedas que tengan una relación de cambio fija.
Necesitaremos crear un UserForm (un formulario de usuario), donde insertaremos:
- 3 etiquetas de texto (Label), de las cuales, una de ellas será para introducir el texto "Introduce una cantidad". Otra de las etiquetas servirá mostrar el contravalor calculado de la moneda que deseamos convertir (a esta etiqueta, le daremos color azul celeste, para que podamos localizarla en el UserForm, y para darle un toque distinto), y la tercera etiqueta servirá para mostrar el texto "Ptas" o "Euros". A estas etiquetas les pondremos por nombre Texto1, Texto2, y Texto3, respectivamente
- 1 cuadro de texto (TextBox), al que le pondremos por nombre Cantidad.
- 2 botones de opción (OptionButton), de los cuales, uno servirá para convertir de euros a pesetas, y el otro de pesetas a euros. Les pondremos por nombre DeEurosAPtas, y DePtasAEuros, respectivamente.
- 1 imagen de una moneda de 1 euro y de 1 peseta (todo ello en una misma imagen). Le pondremos por nombre Image1
- 1 CommandButton, para mostrar el mensaje de "Cerrar ventana", y al que le pondremos por nombre Cerrar.
Al UserForm, le daremos el nombre de Euroconversor, para lo cual simplemente tendremos que introducir ese nombre en la propiedad "Nombre", tal y como figura en la siguiente imagen (ver la zona remarcada en rojo):
Para darle nombre al resto de elementos (TextBox, OptionButton, etc.), desde el modo VBA, cliquearemos encima de cada uno de los
Para que se ejecute el macro, hemos habilitado un botón en la hoja de cálculo. Cada vez que se cliquee sobre el mismo, se nos cargará el UserForm:
Para que se cargue el UserForm, en un módulo de VBA, crearemos este macro:
Sub Cargar_conversor() 'Que se cargue el UserForm del Euroconversor EurosPesetas.Show End Sub |
Para que funcione el euroconversor, deberemos añadir todos estos códigos que a continuación os incluyo. Para colocar el código, deberéis cliquear en el UserForm, cuando lo tengáis a la vista, desde el modo VBA (ver la primera imagen que hay en este artículo).
Para convertir de euros a pesetas, añadiremos esto (en el código correspondiente al formulario):
Private Sub DeEurosAPtas_Click() 'Si hay errores, que continúe On Error Resume Next 'Si la cantidad está vacía... If Cantidad = Empty Then 'ponemos el foco en el textbox 'al que hemos llamado Cantidad Cantidad.SetFocus 'mostramos un mensaje MsgBox (Chr(13) + " Por favor, introduce una cantidad. " _ + Chr(13) + Chr(13)), vbOKOnly, " Datos incompletos" End If 'Si Cantidad no es numérica If Not IsNumeric(Cantidad) Then 'eliminamos la entrada Cantidad = Empty 'ponemos el foco en el textbox 'al que hemos llamado Cantidad Cantidad.SetFocus Else 'si es numérica,le damos formato con 2 decimales Cantidad = Format(Cantidad, "##,##0.00") 'que ponga el texto "Euros", en la etiqueta correspondiente Texto3.Caption = "Euros" 'le damos color negro a la cifra convertida, 'es decir, al resultado obtenido Texto2.ForeColor = RGB(0, 0, 0) 'que añada el texto "Ptas", al resultado Texto2.Caption = Format(Cantidad * 166.386, "#,##0") & " Ptas" End If End Sub |
Para convertir de pesetas a euros, añadiremos esto (en el código correspondiente al formulario):
Private Sub DePtasAEuros_Click() 'Si hay errores, que continúe On Error Resume Next 'Si la cantidad está vacía... If Cantidad = Empty Then 'ponemos el foco en el textbox 'al que hemos llamado Cantidad Cantidad.SetFocus 'mostramos un mensaje MsgBox (Chr(13) + " Por favor, introduce una cantidad. " _ + Chr(13) + Chr(13)), vbOKOnly, " Datos incompletos" End If 'Si Cantidad no es numérica If Not IsNumeric(Cantidad) Then 'eliminamos la entrada Cantidad = Empty 'ponemos el foco en el textbox 'al que hemos llamado Cantidad Cantidad.SetFocus Else 'si es numérica,le damos formato sin decimales Cantidad = Format(Cantidad, "##,##0") 'que ponga el texto "Euros", en la etiqueta correspondiente Texto3.Caption = "Ptas" 'le damos color azul a la cifra convertida, 'es decir, al resultado obtenido Texto2.ForeColor = RGB(23, 48, 141) 'que añada el texto "Ptas", al resultado, 'y con formato de 2 decimales Texto2.Caption = Format(Cantidad / 166.386, "#,##0.00") & " Euros" End If End Sub |
Cada vez que cliqueemos en el TextBox llamado Cantidad, reiniciaremos los datos del UserForm. El código que necesitaremos es este:
Private Sub Cantidad_Enter() 'Si hay errores, que continúe On Error Resume Next 'que elimine todas las entradas Cantidad = Empty Texto2.Caption = Empty Texto3.Caption = Empty 'desmarcamos las opciones de los botones DeEurosAPtas.Value = False DePtasAEuros.Value = False End Sub |
Y finalmente, para cerrar el UserForm, si cliqueamos en el botón habilitado a tal efecto, necesitaremos este código:
Private Sub cerrar_Click() 'Si hay errores, que continúe On Error Resume Next 'Descargamos el formulario de la memoria Unload Me End Sub |
Aquí os dejo dos pantallazos tras introducir la cifra de 1.275. Primero convertiremos esa cifra a pesetas, y en la otra imagen, convertiremos esa cifra, de pesetas a euros:
Desde aquí podéis descargar el fichero de excel, con el ejemplo que os presento en este artículo.
0 comentarios:
Publicar un comentario