............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

codigo para VUnitario1 y Vunitario2

Ver el tema anterior Ver el tema siguiente Ir abajo

codigo para VUnitario1 y Vunitario2

Mensaje por ppitufo el Mar Mar 13, 2012 3:45 pm

EXCEL 2003 -> NO ES POR MI LA ASOCIACION TIENE EXCEL 2003 ES EL QUE DEBO USAR

buenas he estado haciendo unas limitaciones para ingresar un valor en la base de datos, la asociacion tiene un limite minimo para considerar un activo con depreciacion y este limite es de 100000 colones eso en dolares son como 110 dolares mas o menos, por debajo de los 100000 colones es considerado como un activo de material de oficina que tiene el codigo 512

ahora bien la rutina es esta

el usuario ingresa por ejemplo 50000 en los textbox VUnitario1 o VUnitario2 cualquiera de los dos y no se ha seleccionado la categoria materiales de oficina que muestra automaticamente el codigo 512 en un label ICodigo me tira un mensaje diciendome que El monto insertado es inferior al monto minimo, seleccione la categoria: 512 - Material de oficina"

ahora bien el problema que tengo es que no me deja ingresar el monto completo apenas inserto un numero X me tira el mensaje de error necesito sus consejos para resolver esta problematica

Código:
Private Sub VUnitario1_Change() 'Restriccion a solo numeros y Multiplicacion sin agregar impuestos
If IsNumeric(VUnitario1.Value) < 100000 And ICodigo <> 512 Then
    Beep
    MsgBox "El monto insertado es inferior al monto minimo, seleccione la categoria Material de oficina"
    VUnitario1.Text = ""
End If

eserror = False
If IsNumeric(VUnitario1.Text) = True Then
  If Val(VUnitario1.Text) < 100000 And ICodigo <> 512 Then
      eserror = True
  End If
Else
  eserror = True
End If

If eserror = True Then
    MsgBox "El monto insertado es inferior al monto minimo," & _
          "seleccione la categoria: 512 - Material de oficina", _
            vbCritical, "Depuración del monto"
        Exit Sub
End If

If Not IsNumeric(VUnitario1.Text) And _
    VUnitario1.Text <> "" Then
    Beep
    MsgBox "Sólo números permitidos"
    VUnitario1.Text = ""
End If

If VCantidad1 <> "" And IsNumeric(VCantidad1) And _
  VUnitario1 <> "" And IsNumeric(VUnitario1) Then
  VTotal1 = VCantidad1 * VUnitario1
End If
End Sub

Private Sub VUnitario2_Change() 'Restriccion a solo numeros y Multiplicacion agregando los impuestos: (1+IMPUESTOS) = 1.13
If IsNumeric(VUnitario2.Value) < IsNumeric.VUnitario2("100000") And ICodigo <> 512 Then
    Beep
    MsgBox "El monto insertado es inferior al monto minimo, seleccione la categoria Material de oficina"
    VUnitario2.Text = ""
End If

eserror = False
If IsNumeric(VUnitario2.Text) = True Then
  If Val(VUnitario2.Text) < 100000 And ICodigo <> 512 Then
      eserror = True
  End If
Else
  eserror = True
End If

If eserror = True Then
    MsgBox "El monto insertado es inferior al monto minimo," & _
          "seleccione la categoria: 512 - Material de oficina", _
            vbCritica2, "Depuración del monto"
        Exit Sub
End If

If Not IsNumeric(VUnitario1.Text) And _
    VUnitario1.Text <> "" Then
    Beep
    MsgBox "Sólo números permitidos"
    VUnitario1.Text = ""
End If

If VCantidad1 <> "" And IsNumeric(VCantidad1) And _
  VUnitario1 <> "" And IsNumeric(VUnitario1) Then
  VTotal1 = VCantidad1 * VUnitario1
End If
End Sub

Archivos
Copia de DEPRECIACION 42.xls No tienes los permisos para descargar los archivos.(336 KB) Descargado 2 veces

ppitufo

Masculino Cantidad de envíos : 7
Edad : 32
Ciudad - Pais : san jose
Version de Excel : excel 2003
Fecha de inscripción : 06/03/2012

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por ppitufo el Mar Mar 13, 2012 7:45 pm

buenas cambie de lugar el codigo de limite y lo meti al boton de ingresar datos, pero se me va a volver muy grande mucho codigo y tengo que poner un mensjae de avisar si hay campos vacios que no se han llenado y no se como hacerlo

es decir me muestre al presionar el boton ingresar un mensjae diciendo que hay campos sin llenar y te devuelve al formulario se como hacerlo para cada uno pero se me va a hacer mucho codigo hay alguna forma de hacerlo universal ?

Código:
'================================= BOTONES DE FORMULARIOS =================================
'==========================================================================================
Private Sub BtnNuevoDato_Click() 'Boton para mostrar resumen de nuevos datos
On Error Resume Next

    FmResumen.ReCodigo = ICodigo
    FmResumen.ReCategoria = ICategoria
    FmResumen.ReNuFactura = IFactura

    If IReferencia.Enabled = fase Then
          FmResumen.Referencia.Visible = False
          FmResumen.ReReferencia = ""
      Else
          FmResumen.ReReferencia.Enabled = True
          FmResumen.ReReferencia = IReferencia
    End If

    FmResumen.ReDescripcion = IDescripcion
    FmResumen.ReEstado = IEstado
    FmResumen.ReFecha = IFeCompra

    If OpcConImp = True Then
        eserror = False
        If IsNumeric(VUnitario1.Text) = True Then
          If Val(VUnitario1.Text) < 100000 And ICodigo <> 512 Then
          eserror = True
          End If
            Else
              eserror = True
          End If

          If eserror = True Then
              MsgBox "El monto insertado es inferior al monto minimo," & _
                      "seleccione la categoria: 512 - Material de oficina", _
                      vbCritical, "Depuración del monto"
              Exit Sub
        End If
          FmResumen.ReVaUnitario = CDbl(VUnitario1)
          FmResumen.ReCantidad = VCantidad1
          FmResumen.ReTotal = VTotal1
      Else
        eserror = False
        If IsNumeric(VUnitario2.Text) = True Then
          If Val(VUnitario2.Text) < 100000 And ICodigo <> 512 Then
          eserror = True
          End If
            Else
              eserror = True
          End If

          If eserror = True Then
              MsgBox "El monto insertado es inferior al monto minimo," & _
                      "seleccione la categoria: 512 - Material de oficina", _
                      vbCritical, "Depuración del monto"
              Exit Sub
        End If
          FmResumen.ReVaUnitario = CDbl(VUnitario2) * 1.13
          FmResumen.ReCantidad = VCantidad2
          FmResumen.ReTotal = VTotal2
    End If
    FmResumen.Show

End Sub
Archivos
Copia de DEPRECIACION 44.xls No tienes los permisos para descargar los archivos.(418 KB) Descargado 4 veces

ppitufo

Masculino Cantidad de envíos : 7
Edad : 32
Ciudad - Pais : san jose
Version de Excel : excel 2003
Fecha de inscripción : 06/03/2012

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por moises melgar el Miér Mar 14, 2012 1:52 pm

si repites mucho un proceso exactamente igual en varios codigos create un nuevo codigo que funcione especificamente a eso

Ejemplo

Código:
Private Sub boton1()
.......
.....
....
verificavacias ' nombre de mi codigo para verificar x situacion
....
end sub


Private Sub verificavacias ()
'aca todo el proceso que funcione para este codigo
end sub

y asi en vez de poner el mismo codigo para cada macro solo le coloco el nombre de "verificavacias" que estas se peuden cambiar por elque quieras (sin espacios)
no se si es esto a lo que te refieres.
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 526
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por ppitufo el Miér Mar 14, 2012 5:28 pm

muchas gracias por querer aconsejarme, si asi es quiero tener el codigo lo mas peque;o posible

segui tus consejos, pero o lo estoy haciendo mal o no veo el error que cometo, pues a pesar de que no me genera error no se ejecuta bien
yo no se gran cosa de VBA estoy aprendiendo


Código:
'================================= BOTONES DE FORMULARIOS =================================
'==========================================================================================
Private Sub BtnNuevoDato_Click() 'Boton para mostrar resumen de nuevos datos
On Error Resume Next
    verificavacias
          FmResumen.ReCodigo = ICodigo
          FmResumen.ReCategoria = ICategoria
          FmResumen.ReFactura = IFactura
          FmResumen.ReDescripcion = IDescripcion
          FmResumen.ReEstado = IEstado
          FmResumen.ReFecha = IFeCompra
   
    If IReferencia.Enabled = False Then
          FmResumen.Referencia.Visible = False
          FmResumen.ReReferencia.Visible = False
      Else
      verificavacias
          FmResumen.ReReferencia.Enabled = True
          FmResumen.ReReferencia = IReferencia
    End If

    If OpcConImp = True Then
      verificavacias
          FmResumen.ReVaUnitario = CDbl(VUnitario1)
          FmResumen.ReCantidad = VCantidad1
          FmResumen.ReTotal = VTotal1
      Else
      verificavacias
          FmResumen.ReVaUnitario = CDbl(VUnitario2) * 1.13
          FmResumen.ReCantidad = VCantidad2
          FmResumen.ReTotal = VTotal2
    End If
   
FmResumen.Show
End Sub

Private Sub verificavacias()
        eserror = False
        If IsNumeric(VUnitario1.Text) = True Or IsNumeric(VUnitario2.Text) = True Then
          If val(VUnitario1.Text) Or IsNumeric(VUnitario2.Text) = True < 100000 And ICodigo <> 512 Then
          eserror = True
          End If
            Else
              eserror = True
          End If
          If eserror = True Then
              MsgBox "El monto insertado es inferior al monto minimo," & _
                      " seleccione la categoria: 512 - Material de oficina", _
                      vbCritical, "Depuración del monto"
              Exit Sub
        End If

        eserror = False
        If ICodigo = True Or ICategoria = True Or IFactura = True Or IDescripcion = True Or IEstado = True Or IFeCompra = True Then
          If ICodigo = "" Or ICategoria = "" Or IFactura = "" Or IDescripcion = "" Or IEstado = "" Or IFeCompra = "" Then
          eserror = True
          End If
            Else
              eserror = True
          End If
          If eserror = True Then
              MsgBox "Hay campos sin datos, ingrese los datos que faltan en el formulario", _
                      vbCritical, "Depuración del valor"
              Exit Sub
        End If
       
        eserror = False
        If ReReferencia = True Then
          If ReReferencia = True Then
          eserror = True
          End If
            Else
              eserror = True
          End If
          If eserror = "" Then
              MsgBox "El campo: relación con otro activo, está vacio," & _
                      " ingrese el valor o selecciona NO para desactivarlo", _
                      vbCritical, "Depuración del valor"
              Exit Sub
        End If
End Sub
Archivos
mejoras de version 1.xls No tienes los permisos para descargar los archivos.(390 KB) Descargado 5 veces

ppitufo

Masculino Cantidad de envíos : 7
Edad : 32
Ciudad - Pais : san jose
Version de Excel : excel 2003
Fecha de inscripción : 06/03/2012

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por ppitufo el Jue Mar 15, 2012 11:07 am

buenas no he podido solucioanrlo aun , me dan una mano?

ppitufo

Masculino Cantidad de envíos : 7
Edad : 32
Ciudad - Pais : san jose
Version de Excel : excel 2003
Fecha de inscripción : 06/03/2012

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por moises melgar el Jue Mar 15, 2012 1:13 pm

Hola, Excelgali es completamente gratuito y las consultas y respuestas no son de un dia para el otro todo depende del miembro que decida darse un tiempo para poder apoyar, la mayoria estan en varios foros y aparte trabajan

pero como lo necesitas y siento que andas "apurado" te dare la clave que necesitas:
en Primero para poner condicionantes para un valor = true dentro de un IF, Existe el Elseif, pero eso no ocaciona el detalle

Lo que creo que necesitas es que si en "verificavacias" "eserror" sea True o "eserror" = "" entonces el codigo donde lo utilizas termine y si es false continue

Basandome en esa idea lo unico que hace falta es convertir a "eserror" en una variable publica que pueda ser usada por cualquier macro dentro del modulo
esto para lograrlo, lo unico que se necesita es colocar en la primera fila de todo lo sig:

Código:
Private eserror
esto va arriba de '==========CARGA LOS COMBOBOX'S====="

luego dentro de las macros despues de colocar:
"verificavacias"
coloca:
Código:
If eserror = True Or eserror = "" Then
exit sub
End If

con esto al terminar el codigo de "verificavacias" la macro donde esta corriendo podra Leer el valor de "eserror" asi si eserror= verdadero o es "", la macro donde esta colocada se terminara inmediatamente o si es False continuara.

Te dejo una informacion sobre el tema se titula "Ámbito de variables en Visual Basic para aplicaciones" es del soporte de Microsoft + los ejemplos elaborados en Excel exactamente como estan en el articulo, esto lo lei gracias a un tema del foro hace tiempo y asi igual ese dia me elabore los ejemplos por eso se me hace facil enviarlos y explicartelo que estar haciendo el trabajo, lo cual considero me tomara mas tiempo.
Archivos
Ambito de variables.zip No tienes los permisos para descargar los archivos.(131 KB) Descargado 6 veces
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 526
Edad : 28
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por GalileoGali el Jue Mar 15, 2012 10:30 pm

El siguiente código permite recorrer la coleccion de Objetos en el formulario, estableciendo cambios en los que cumplen con la condicion de ser TextBox


Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
ctrl.Text = vbNullString
End If
Next

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: codigo para VUnitario1 y Vunitario2

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.