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.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.