Saltar al contenido

Descontar cantidad de item


Recommended Posts

Hola, tengo que realizar un calculo con Vba sin usar las celdas del excel, este calculo seria el siguiente, en el siguiente form:

imagen.png.2ade76a6e989b8fdbd7ea845f2fa419d.png

 

En el contenedor de la izquierda tengo dos datos numerados hasta el 5...códigos de los item y la cantidad de ellos que me hace falta.

En el contenedor de la derecha tengo la siguiente dinamica... codigo del item, "los kilos" (se se calculan multiplicando el n°envases por el peso de los mismos, menos el sobrante), los N° envases, el peso de cada envase y el sobrante de cada item.

 

el caso es que he intentado realizar esta tarea ... pero no doy con la solución, intente con este código:

For Each ctrl In Me.Controls

    If TypeName(ctrl) = "TextBox" Then

        If InStr(1, ctrl.Name, "CnV") > 0 And ctrl.Text <> "" Then
            
             If CDbl(Controls(ctrl.Name).Value) = Cn1 Then
                DesV1 = KilosF1 + (DeVT1 + KgC1)
             End If
             If CDbl(Controls(ctrl.Name).Value) = Cn2 Then
                DesV2 = KilosF2 + (DeVT2 + KgC1)
            End If
             If CDbl(Controls(ctrl.Name).Value) = Cn3 Then
                DesV3 = KilosF3 + (DeVT3 + KgC1)
             End If
             If CDbl(Controls(ctrl.Name).Value) = Cn4 Then
                DesV4 = KilosF4 + (DeVT4 + KgC1)
             End If
             If CDbl(Controls(ctrl.Name).Value) = Cn5 Then
                DesV5 = KilosF5 + (DeVT5 + KgC1)
             End If
	End If
Next ctrl

pero no consigo el dinamismo que necesito...es decir, cuando indique el código del item y agregue la cantidad de envases y los kilos de estos (y el sobrante si aplica)... la cantidad de kilogramos obtenida debe sumarse a la cantidad mostrada en negativo en el contenedor de la izquierda, y así con cada item agregado en el contenedor de la derecha.

 

Quedo atento a sus comentarios...

 

descontar.xlsm

Enlace a comentario
Compartir con otras webs

Como no te explique un poco mejor.

Pon un ejemplo de forma manual totalmente desarrollado y explicando de donde sale la información, si se obtiene de algún cálculo, si se introduce manualmente, si viene de alguna hoja,........

Enlace a comentario
Compartir con otras webs

Hola... El cálculo viene del valor de una variable "Kilosf1"...  Los datos que están en el form son un ejemplo semejante a la variable... El objetivo de este userfom es de conocer cuantos kilos faltan de cada ítem en función a los ingresos realizados en la zona de la derecha. 

Enlace a comentario
Compartir con otras webs

Hola... como replicar la siguiente dinámica con macros ?:

 

268df13ccb94c0de1dd7572136144cd6.png

tengo en el lado izquierdo unos item y la cantidad que me falta y en el derecho los campos para indicar la cantidad de "esos" item y ver en tiempo cuantos me quedarían por agregar.

 

adb574f2bb64bad6722dcacd3f5af283.png

en este ejemplo ingrese un envase de 200 kilos de 122 y en el lado izquierdo se evidencia que ya no faltan 400 (como en la primera imagen)  sino 200 por ingresar.

 

865b0e15acc661cc2a3f1d752b5a41dd.png

este seria en el caso del item 324 en donde ahora faltan solo 50.

Que código permitiría la realización de esta tarea.

 

Enlace a comentario
Compartir con otras webs

Hace 7 horas, Antoni dijo:

No está del todo claro que pretendes, ya que no explicas para que necesitas lo que has pedido, pero por lo que he entendido, yo lo enfocaría de esta forma.

A ver que tal.

Descontar (1).xlsm 19 kB · 1 descarga

Hola, la idea es conocer cuantos kilos tengo que mezclar de cada Item (ingrediente) para cumplir con la formula. El archivo que adjuntas muestra una idea nueva y que no sabia que se podía hacer con Vba, por lo cual me surge esta pregunta:

Screenshot_11.thumb.png.e592b2625b080d9d60165213435f172f.png

 

por otro lado la funcionalidad que muestras acá es exactamente la expuesta... sin embargo... la curiosidad me embarga respecto a mi planteamiento original...

 

Agradecido por la atención, y por aumentar mi vista en cuanto a las posibilidades de Vba 

 

 

Enlace a comentario
Compartir con otras webs

Revisa el adjunto.

En cuanto a tu planteamiento inicial, es inviable, a menos que nos metamos con módulos de clase para interceptar el evento Change de cada uno de los textbox y tratarlos como si fueran uno solo, y honradamente, a parte del engorro que supone, creo que tus conocimientos sobre programación y VBA no son suficientes en estos momentos como para abordar este tema.

Descontar (1) (1).xlsm

Enlace a comentario
Compartir con otras webs

  • 3 months later...

Hola, aplique lo que me recomendaste @Antoni, el formato realiza la labor prevista, aprendí mucho adaptando tu planteamiento a la problemática presentada. puedes dar por cerrado el tema, mil gracias por el apoyo.

 

Mis disculpas por la demora en responder.

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 97 ¿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
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hola que tal amigos programadores por favor me podrían ayudar con una macro que me genere un archivo CSV delimitado por comas, la estructura del archivo CSV no deberá llevar encabezado, los datos del archivo CSV serán obtenidos de la hoja “Datos”. En la columna A: deberá tener la clave clues que se toma de la columna B de la hoja Datos En la Columna B: el Código (son 230 codigos que van del rango G1:IB1 de la hoja datos) En la Columna C: el valor almacenado a su correspondiente al código y clues En la Columna D: el número del mes que se obtendrá de la de la columna E de la hoja Datos En la Columna E: el año que se tomará de la columna F de la hoja de Datos   Son 230 códigos por lo que la macro generará 230 filas por cada clave clues que tenga la hoja Datos En el archivo anexo una hoja llamada CSV para que vean la estructura que tendrá, el archivo CSV estará delimitado por comas   Les agradecería mucho que me ayuden por favor, Dios los bendiga Exportar datos a csv.xlsx
    • Hola buenas tardes.   Debido al trabajo debo estar comparando en un periodo unos archivos dentro de una carpeta o subcarpeta. en base a la fecha de creacion o modificacion.  pero tengo que estar viendo carpeta por carpeta y aveces son varios. Con una macro intente  listar los archivos de cualquier carpeta y subcarpeta, esto activandolo segun la celdaactiva. El problema es que tiene algunos errores. 1. si la carpeta cuenta con subcarpetas me los manda a muchas filas abajo. Mi idea es hoja(Así debe quedar) Que con una macro pueda seleccionar la carpeta desde el buscador y me de la lista de archivos a partir de la fila 6. siendo columna A= fecha de modificación, columna B =Fecha de creación y columna C=Nombre del archivo con hiperlink. Con otro o con la misma macro poder seleccionar otra carpeta y sus subcarpetas, según sea el caso. y me liste a partir de la columna F de la fila 6 Siendo La columna F=Nombre del archivo, columna H=fecha de creación, columna I=ultima modificación   Para así poder acceder y comparar mis archivos, directamente desde excel.   Muchas gracias Mariano       Listar archivos de 2 carpetas para comparar.xlsm
    • Hola buenas, Os presento mis dudas. Tengo un libro  (llamémosle LibroDestino) con dos módulos, uno de definición de variables "ModDef" y otro de inicializacion de esas mismas variables "ModCfg". Necesito que al copiarme una hoja de otro libro(llamémosle LibroOrigen), mediante un procedimiento, sobrescribir el modulo de inicialización de variables del LibroDestino con el  contenido del módulo que hay en el LibroOrigen. Destacar que los dos módulos de cada libro tienen el mismo nombre "ModCfg". Y tienen una única variable llamada "Mensaje". En el LibroDestino tiene el valor "Hola" y en el LibroOrigen el valor "Adiós" Este procedimiento lo realiza perfectamente,  es decir se sobrescribe, pero si en el mismo procedimiento quiero utilizar el nuevo valor de esa variable, me conserva el valor de la variable anterior. Para hacer las comprobaciones he ejecutado un MsgBox al empezar y al acabar el procedimiento, pero en los dos casos me devuelve el valor original del LibroDestino el valor "Hola", cuando mi idea es que al sobrescribir el modulo con el nuevo valor de la variable, el último MsgBox me devuelva el valor "Adios". Mi objetivo es poder tener la inicialización de esas variables en un libro que no sea el de trabajo (LibroDestino), ya que según la hoja que importe puedo requerir que las variables tengan un valor u otro. ¿Por que no me coge en el procedimiento el nuevo valor de la variable? ¿Cómo podría conseguirlo? He tenido que activar en VBA  la referencia Microsoft visual basic for applications extensibility 5.3 desde  Herramientas -> Referencias. Creo que es la única manera de poder trabajar con los módulos desde VBA, aunque si se pudiera de otra manera creo que sería mas óptimo. Mil gracias de antemano, un saludo!         Libro1_Prueba.xlsm Libro2_Prueba.xlsm
    • Agradecido Antoni! Tus sugerencias me ayudaron mucho! Como pudiese hacerte llegar el archivo?
    • Prueba este código. Sin el archivo no te puedo ajustar más. Private Sub btnCargaBancos_Click() 'El tipo de dato debe especificase para cada variable Dim TasaCompra As Double, TasaVenta As Double, InvBanesco As Double, InvVzla As Double Dim MontoBanesco As Double, MontoVzla As Double, TasaDiaBan As Double, TasaDiaVzla As Double Dim TasaActual As Double 'Hay que comprobar que los textbox tienen contenido numérico 'Los datos numéricos solo pueden contener números y el separador decimal, cualquier otro caracter dará error al convertir If Not IsNumeric(txtInverBanesco) Or _ Not IsNumeric(txtInverVzla) Or _ Not IsNumeric(txtTasaCompra) Or _ Not IsNumeric(txtTasaVenta) Then MsgBox "Los datos deben ser numéricos", vbCritical Exit Sub End If InvBanesco = CDbl(txtInverBanesco) InvVzla = CDbl(txtInverVzla) TasaCompra = CDbl(txtTasaCompra) TasaVenta = CDbl(txtTasaVenta) 'Los datos de los divisores no pueden ser 0 (Indeterminación matemática) If TasaCompra = 0 Or _ InvBanesco = 0 Or _ InvVzla = 0 Then MsgBox "Los datos no admiten valor cero", vbCritical Exit Sub End If MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055) TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then TasaActual = TasaDiaBan Else TasaActual = TasaDiaVzla End If 'En VBA, los datos numéricos no admiten ser formateados, formatear directamente en las celdas, 'MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) 'MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) 'TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco = MontoBanesco txtBcoVenezuela = MontoVzla txtTasaDiaria = TasaActual End Sub  
  • 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.