Imprimir página | Cerrar ventana

Recorrer DTPickers con variable

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=79478
Fecha de impresión: 26/Febrero/2020 a las 12:00


Tema: Recorrer DTPickers con variable
Publicado por: Ra2ven
Asunto: Recorrer DTPickers con variable
Fecha de publicación: 18/Agosto/2014 a las 18:28
Hola, soy nuevo en el foro y lo primero de todo mando un saludo.

Tengo una aplicación en Excel con 200 DTPickers con sus fechas seleccionadas y debo chequear el valor de cada uno para establecer una condición:


Private Sub DTPicker343_Change()

Suma = 0

Dim Fecha As Object
Dim Fecha1 As Variant

For variable = 1 To 200

   Fecha1 = "DTPicker" & variable
   Set Fecha = Fecha1

   If Fecha.Value < DTPicker343.Value Then
    Suma = Suma + Range("E" & variable)
   End If
Next

Range("I6").Value = Suma
End Sub


Básicamente consiste en que al elegir una fecha en el DTpicker343 se comprueban las fechas de los DTPickers del 1 al 200 y se suman los valores numéricos de la columna anexa a cada uno (E1 a E200) si se cumple la condición de que la fecha del DTPicker evaluado es inferior a la del DTPicker343.

Simplificándolo el problema es construir una referencia a un objeto DTPicker"x" a base de strings o variants.

He probado de todo con las variables a unir (strings, variants, objects, set, createobject, etc.) y me da errores de todo tipo

Un saludo



Respuestas:
Publicado por: Emilio
Fecha de publicación: 18/Agosto/2014 a las 19:06
Hola!

si esto es como parece algo relacionado con Excel, ¿porqué lo has posteado en Access y VBA?, si efectivamente es así, por favor dilo para que lo movamos al foro de Excel.

-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: Ra2ven
Fecha de publicación: 18/Agosto/2014 a las 19:07
ah, Si es de Excel.

Fallo mio.



Publicado por: Emilio
Fecha de publicación: 18/Agosto/2014 a las 19:32
Para empezar decirte que Microsoft ha quitado de la circulación los controles ActiveX, entre los que está incluido el DTPicker, por ese motivo te sugiero que replantees tu aplicación.

-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: Ra2ven
Fecha de publicación: 19/Agosto/2014 a las 10:17
Pues funciona bien para seleccionar fechas de un calendario. ¿Cuál es la alternativa entonces?

Yo lo que quiero es una celda en la que pueda seleccionar una fecha de un calendario, se quede ese valor en la celda y sea accesible por VBA


Publicado por: AnSanVal
Fecha de publicación: 19/Agosto/2014 a las 12:05

Opino que mientras lo tengas instalado (y puedas disponer de él) es una muy buena opción, lo que no es tan recomendable es "200 DTPickers", lo recomendable es uno sólo que escriba la fecha en (por ejemplo) la celda seleccionada (y se cierre) y que cuando cambies a otra celda de fecha vuelvas a abrir el mismo DTPicker.

Alternativa (para cuando no dispongas de DTPicker) en http://www.achinet.mvp-access.es/" rel="nofollow - mi página tengo el ejemplo 32, con un calendario creado por mi que escribe la fecha directamente en celdas.


-------------
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: Ra2ven
Fecha de publicación: 19/Agosto/2014 a las 21:15
No se que pasa que ahora al abrir el Excel no puedo seleccionar nada en los datepickers (aparecen cruces rojas).

AnSanVal muy bueno el código, solo tengo una duda, ¿como activo el control para otras celdas que no sean las B3:30?

Gracias


Publicado por: AnSanVal
Fecha de publicación: 19/Agosto/2014 a las 21:46

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 2 And Target.Row > 2 Then ' Aquí actua a partir de B3, modifica según tu caso.

. . .


-------------
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: Ra2ven
Fecha de publicación: 19/Agosto/2014 a las 23:14
Publicado originalmente por AnSanVal AnSanVal escribió:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 2 And Target.Row > 2 Then <FONT color=#006600>' Aquí actua a partir de B3, modifica según tu caso.[/COLOR]


. . .


Nose si esto entra dentro de la categoría de brujería...

Me bajo tu código lo modifico para mis celdas y va bien. Al cabo de un rato vuelvo a probar y ya no abre el calendario.

Pensé que habría hecho algún cambio que daño el código así que borro el código modificado y bajo otra vez tu código de la web, y en este tampoco funciona el calendario!. No toco nada de tu código y no va cuando antes iba perfectamente...


Publicado por: Ra2ven
Fecha de publicación: 20/Agosto/2014 a las 11:34
Los macros están habilitados y con seguridad al mínimo.

Es como si el código VBA no se inicia con el evento Worksheet_SelectionChange

He probado a crear una aplicación simple en otra hoja y tampoco ejecuta el código VBA en Excel.

Si entro en el código y lo ejecuto desde ahí me pide un nombre para la macro y tampoco hace nada:






Publicado por: AnSanVal
Fecha de publicación: 20/Agosto/2014 a las 12:34
 

Ra2ven ha dicho:

... Es como si el código VBA no se inicia con el evento Worksheet_SelectionChange...

Esto podría ocurrir si en una macro que;
desactiva los eventos al principio, ejecuta  el resto de acciones y activa de nuevo los eventos, y por un mal funcionamiento o manualmente por parte del usuario la macro se detiene a mitad de proceso sin llegar a activar nuevamente los procesos, quedando desactivados de forma permanente.

 
Una forma rápida de comprobar esto es: Pones un punto de interupción en una de las lineas (cursor en esa linea + F9), por ejemplo en la linea del IF..., y en la hoja haces clic en una celda que no sea la activa, si los eventos están activados el código debe detenerse en la linea que marcaste.
 
Para activar los eventos "a mano":  En la ventana inmediato (control + G) del Editor VBA, escribe Application.EnableEvents = True y pulsa INTRO.
 
 
Editado (AnSanVal): Viendo la imagen de tu mensaje; Supongo que no habrás quitado el apostrofo de 'Exit Sub, pues no funcionaría nunca el resto del código.
 
 


-------------
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: Ra2ven
Fecha de publicación: 20/Agosto/2014 a las 15:49
He probado lo que dices pero sigue igual. No detecta punto de interrupción ni nada, simplemente no se ejecuta código.

Los archivos los descargo directamente de tu web sin tocar ni una letra y no funciona cuando ayer lo hacia perfectamente. Solo descomprimo el rar en una carpeta y abro el Excel.

Si le doy a F5 en las diferentes ventanas de código en VBA me sale que le de nombre al macro salvo en la de userform1 que me abre el calendario pero al seleccionar una fecha salta error "error en el método value de objeto range"


Publicado por: sdgm
Fecha de publicación: 20/Agosto/2014 a las 16:36
¿Será un conflicto de librerías?

En tu Excel, pulsa Alt + F11, y en Herramientas - Referencias, verifica si todas las librerías están Ok.




-------------
Cordialmente, David


Publicado por: AnSanVal
Fecha de publicación: 20/Agosto/2014 a las 18:24
Si ayer lo hacía perfectamente y hoy no, tendrás que investigar que es lo que ha cambiado desde ayer, yo no puedo investigar en tu archivo.
 
De cualquier modo independientemente de mi código el evento SelectionChange debe ejecutarse al seleccionar una celda de la hoja, siempre que el código esté en el módulo de dicha hoja y no en un módulo ordinario o en el módulo de otra hoja.


-------------
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: Ra2ven
Fecha de publicación: 21/Agosto/2014 a las 20:54
Publicado originalmente por sdgm sdgm escribió:

¿Será un conflicto de librerías?

En tu Excel, pulsa Alt + F11, y en Herramientas - Referencias, verifica si todas las librerías están Ok.




Me dice: "error en el registro de acceso al sistema".

Al final he encontrado solución. Simplemente cerrar el archivo de Excel y abrir otro archivo excel de ejemplo de calendario bajado de otra web.

Si ahora vuelvo al primero ya funciona correctamente. Parece ser que un clavo saca otro clavo.



Imprimir página | Cerrar ventana