Hola erbunson!
Buenos dias, primero sobre tu consulta de esto .:
ReDim Preserve CSemanas(1, UBound(CSemanas, 1) + 1)
CSemanas(0, UBound(CSemanas, 1) + 1) = NRegistro
CSemanas(1, UBound(CSemanas, 1) + 1) = Horas.semana
mi intención es, en la primera linea ampliar en una columna (ya que filas no es posible) la matriz existente. Y en la segunda y tercera linea introducirle los datos de Nr. de registro y Nr. de semana a la nueva columna creada; me comentas que machacan los datos y en eso estoy de acuerdo, ya que a mi tambien me parecio extraño pero cuando busque en la ayuda de VB fue alli, a menos de no ser un error de Microsoft, donde explicaba como hacer la orden que comentastes de REDIM PRESERVE y aprovechar la fuerza del UBound para situarte en la ultima columna generada, para mi esas tres lineas deberian ser asi .:
ReDim Preserve CSemanas(1, UBound(CSemanas, 2) + 1)
CSemanas(0, UBound(CSemanas, 2) + 1) = NRegistro
CSemanas(1, UBound(CSemanas, 2) + 1) = Horas.semana
ya que según lei, en el caso de UBound y LBound no era 0 para filas y 1 para columnas sino 1 y 2 incluso si escribo el codigo de la 2 ª manera me da error "El subindice esta fuera del intervalo" por lo que me extraña mas aún y encima no me rellena nada.
Por eso cada vez que doy un paso alante parece que de dos hacia atras y me encuentre mas perdido. Lo peor de todo es que lo que me vas enseñando lo pongo en practica con programillas que me hago de apoyo y sin duda me van de perlas pero
por desgracia para poderlo aplicar al principal debo hacer muchos pasos intermedios o sino todo el codigo que tengo echo no me servive de nada y mi intención como te comente, es primeramente finalizar mi programa (posiblemente con codigo escesivamente complicado y largo) y una vez ya funcione ir utilizandolo y paralelamente y como decis los informaticos mientras preparo la 2ª Release o version, analizo el primero para mejorarlo y simplificarlo e ir poniendo en practica todo lo aprendido por ti. Creo que es lo mas logico para aprender y si lo necesito poderlo utilizar de momento.
Despues cuando me sorprendes, como por ejemplo lo del codigo de arriba, lo hago funcionar y FLASHHHHHHHH!!!! haces lo que mas o menos necesito pero desde otro punto de mira, en el cual obtienes casi y mas resultados pero con un planteamiento totalmente diferente y que para aplicarlo deberia eliminar todo lo creado y hacerlo de nuevo, de ahi me plantee el estudiarlo mas a fondo, comprender el que y porque y plantearmelo para la nueva versión pues Release suele mantener el entorno igual y solo mejora o añade nuevas funciones y Version es cuando incluso la presentación es diferente o asi creo que es.
Referente al codigo nuevo tuyo, veo que se abre una Grilla con un monton de campos, un combovox con selector de campos, otro vacio y un comando llamado cargar, lo que necesitaria saber cual es la idea de funcion global y que debe hacer cada comando, me refiero al Boton cargar, el selector y el combo vacio cuando ya funciona el programa y no como codigo, pues lo he probado con el archivo Horas.dat y en esta parte de codigo del modulo .:
Código vb:
Ver originalPublic Sub GridPonerDato(Grid As MSFlexGrid, Fila As Single, Columna As Single, Dato As Variant)
* ' Si la fila no existe, la añadimos. La columna es de suponer que ya le hemos puesto cabecera
If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1
* Grid.TextMatrix(Fila, Columna) = Dato
End Sub
me da error en la linea de "Grid.TextMatrix(Fila, Columna) = Dato" con el error :
Error 5
Llamada a procedimiento o argumento no validos.
ya se que me diras si les habia quitado los asteriscos, pues si, si se los he quitado la 1ª vez que me dio error y los vi, aunque este error es uno que me persigue desde hace dias por todas partes, debe estar enamorado de mi y no hay manera de olvidarme de el; de todas maneras lo estoy mirando muy minuciosamente pues como dices esta muy, muy comentado.
Un saludo