Saltar al contenido

Linea para agregar a macro con formato moneda


JoaoM

Recommended Posts

publicado

Hola buenas noches

necesito linea para agregar a macro para que de el formato moneda que  a las celdas de una coluna, siempre que introdusca los valores desde una macro de un form.

En un TxtBox de un form al escribir los valores este me prsenta el formato moneda Ej. Bs. 000.000,00 Este formato quiero que siempre que pase datos por medio del form a la hoja (en columna D) me pase el mismo formato del textbox a la celda de columna D.

El pase de datos es con un buton en el form para que introdusca todos los datos de los textbox a la hoja

publicado
Hace 13 minutos , JoaoM dijo:

Hola buenas noches

necesito linea para agregar a macro para que de el formato moneda que  a las celdas de una coluna, siempre que introdusca los valores desde una macro de un form.

En un TxtBox de un form al escribir los valores este me prsenta el formato moneda Ej. Bs. 000.000,00 Este formato quiero que siempre que pase datos por medio del form a la hoja (en columna D) me pase el mismo formato del textbox a la celda de columna D.

El pase de datos es con un buton en el form para que introdusca todos los datos de los textbox a la hoja.

El form es el frmProd. y el textbox presenta el formato moneda en evento Exit

 

Inventario Foros.xlsm

publicado
En 23/12/2020 at 1:38 , JoaoM dijo:

El pase de datos es con un buton en el form para que introdusca todos los datos de los textbox a la hoja

Al menos, cuando se sube un fichare con varios form y varios botones en ellos, se debe indicar CUÁL for y QUÉ botón, sino es imposible ayudar.

Aparte dices en la columna D, y en tu archivo en la única hoja que hay, la columna D es para indicar "Ubicación" :huh:

publicado

Estábien explicito en mi primero pedido de ayuda y en el segundo mas explicito, donde menciona el NOMBRE DEL FORM y mencionando un buton.

Ademas subi el libro

El form es (repito) frmProd, el buton si q parece no haberlo mencionado, el el primer buton del form q tiene por nombre cbtNueClien el cbtEdCli 2º buton  es para editar q tambien incerta el valor del TxtBox txtUbic.

Este ultimo se usa tanto para editar como para insertar nuevo.

Alguna oytra pregunta, por favor, venga la pregunta si así lo amerita

¿Por favor podias leer el segundo mensaje mio?  y revisar el libro Gracias

publicado

Quisiera subir el libro que ya le elimine los form q no son imprecindibles para lo que pido, pero no se como hacerlo.

Los que me presenta, ya son libros subidos anteriormente (CREO) NO ME DA para subir desde mi PC

publicado
En 23/12/2020 at 1:38 , JoaoM dijo:

En un TxtBox de un form al escribir los valores este me prsenta el formato moneda Ej. Bs. 000.000,00 Este formato quiero que siempre que pase datos por medio del form a la hoja (en columna D) me pase el mismo formato del textbox a la celda de columna D.

Siento no ver el problema. En tu fichero en esa columna tienen todos el formato que pides. Es más, he hecho 2 pruebas y pasa los datos como pides... Algo me estoy perdiendo :(

1317067827_Sinttulo.thumb.jpg.956bd21bb10f04ba4e10ed15905cddab.jpg

 

91446620_Sinttulo1.thumb.jpg.0e52744dc229ef73ce55daa5d5ac706f.jpg

publicado

Gracias Haplox por tu respuesta.

Si los pasa, es decir no los pasa si no que las celdas ya tienen el formato moneda personalizado, sin importar si el evento Exit del txtUbic esta con Bs o $.

Talvez no me explique bien.

Lo que quisiera es no tener que dar formato personalizado a las celdas, que el formato que presente el evento Exit en la caja de texto txtUbic, fuera insertado en la celda (sea por evento Insertar Nuevo o evento Editar SIN TENER QUE DAR MANUALMENTE FORMATO PERSONALIZADO A LA CELDA.

Como está actualmente, tengo que manualmente dar formato de la moneda que quiero presentar a la celda. Gracias

publicado
Hace 12 horas, JoaoM dijo:

Lo que quisiera es no tener que dar formato personalizado a las celdas

Vale entendido, entonces tienes que usar la función FormatCurrency al pasar los datos, no hace falta el evento exit del textbox.En esta parte:

	.Cells(fila, 1) = txtCod
    .Cells(fila, 2) = txtProd
    .Cells(fila, 3) = txtProve
    .Cells(fila, 4) = txtFactu
    .Cells(fila, 5) = Format(DTPicker1, "mm/dd/yyyy") 'DTPicker1 en ves de txtFFact
'   .Cells(fila, 5) = NumberFormat = "dd/mm/yyyy" 'dar formato a la celda
    .Cells(fila, 6) = FormatCurrency(txtUbic) '<---  ¡¡¡ AQUÍ !!!'
    .Cells(fila, 7) = txtObser

Ten en cuenta que la función FormatCurrency usa los valores de moneda que tu ordenador tiene configurado regionalmente. Para una ayuda:

https://www.excelfunctions.net/vba-formatcurrency-function.html

 

publicado

Hola Aplox

Cita

Ten en cuenta que la función FormatCurrency usa los valores de moneda que tu ordenador tiene configurado regionalmente. Para una ayuda:

Si lo sabia y se, pero para $ cual es la correcta?.

Probe esta:

    txtUbic = Format(txtUbic, "\$ #,##0.00 ") 'Para formato moneda en $ y sirve para el evento Exit.

¿cres que se pueda psar el formato a celda sin personalisar las celdas?
No logro encontrar la cierta para colocarla en los eventos Nuevocliente y Editar
Si no lo logro, quedaré como antes, formato personalisado a las celdas.
Gracias Aplox

publicado

image.png.dd134cadccdc314a06924c1a3e4b5fa3.png

 

Hay que saber que el formato de una celda de un dato numérico es una forma de presentación, no es el dato en si. (Ver imagen)

Para poder operar con celdas, estas deben contener números, cualquier otro "adorno" será interpretado como texto, incluido el símbolo de moneda, esto es lo que sucede cuando se traspasan datos desde un textbox o con cualquier función de formato, como la función Format(), por eso cualquier intento de utilizar lo mencionado dará como resultado que, en la mayoría de casos, el contenido de esas celdas no podrán ser usadas en cálculos. 

El formato de una celda, es una forma de presentación de un dato que Excel nos proporciona para una visualización mas amigable y que luego es capaz de gestionar. 

Como conclusión diremos que:

  • Para traspasar un dato de un textbox a una celda, debe usarse una función de conversión de texto a número. (CCurrency, CDbl, CLng,.....) no utilizar nunca la función Val(), perderemos los decimales.
  • Para saber si un tetxbox contiene datos numéricos utilizar la función IsNumeric().
  • Para dar formato a una celda, o se hace manualmente desde Excel o se utiliza la propiedad .NumberFormat para darle formato desde VBA.

No es aconsejable utilizar formatos en un textbox, ya que esto nos dificultará la conversión a número.

Deberían utilizarse solo números y el separador decimal, cualquier otra cosa solo nos traerá problemas.

Lo mismo ocurre con las fechas, utilizar CDate() en lugar de Format()

 

 

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.