parece q esto es dificil de hacer

01/09/2004 - 08:33 por lamarse | Informe spam
Hola de nuevo.

Tengo este ultimo problema y por lo que veo no tiene solución. Llevo
varios dias y ni la encuentro y nadie me sabe decir nada.
¿Me podriais confirmar que no se puede hacer?

Muchas gracias

Victor [VDP]

-
Tengo una nueva problemática, donde vuelvo a necesitar de vuestra
ayuda.

A ver,

HOJA1
Contiene 2 RANGE's y 1 CELDA (entre otras cosas, pero esto es lo que
me interesa)

RANGE ("J4:J33")
RANGE ("O4:O9")
CELDA ("F2") = Contiene una fecha variable.

HOJA2
Contiene 1 clase de RANGE que se repite x cada FECHA.

RANGE ("C2:C7") = Este correspondería a la primera fecha, o sea,
30-08-04
RANGE ("D2:D7") = 31-08-04
RANGE ("E2:E7") = 1-09-04
Y así hasta finalizar el mes….. léase..
RANGE ("AI2:AI7") = finalizar el mes, pero en viernes.

Repetimos, pero dicho de otra manera:

Lunes 30/08/04 = Columna C (este es el primer RANGE)
Martes 31/08/04 = Columna D (este es el 2º RANGE)
.
.
Viernes 3/09/04 = Columna G (este es el 5º RANGE)
Sábado y domingo… saltamos las columnas H e I (que quedan para otro
uso)
. [Los Sábado y los Domingos, SIEMPRE se saltan sus columnas (q quedan
para otro uso)]
Lunes 6/09/04 = Columna J (este es el 6º RANGE)
.
. [Esto continua hasta que llegamos a fin de mes, pero no lo cortamos
a mitad de semana, sino que lo alargamos hasta el primer viernes del
próximo mes… léase

Viernes 1/10/04 = Columna AI (este es el 25º RANGE, y ultimo de esta
SERIE)

Una vez llegado a este punto, la siguiente fecha será en la Columna C
de nuevo, léase

Lunes 3/10/04 = RANGE ("C12:C17")

Así quedan los meses ordenados por franjas de filas concretas y se ven
en toda la HOJA (sin tener que desplazarla, aunque esto es mas o
menos, claro).

NOTA: Si esto lo complica demasiado, podemos prescindir de poner cada
mes, uno debajo de otro, y lo podemos poner TODO en RANGE
("LETRA/s2:LETRA/s7"), sin tener que bajar a
RANGE("LETRA/s12:LETRA/s17") (al fin y al cabo es comodidad, no
necesidad)

-
LA PROBLEMÁTICA:

Cuando en la HOJA1 realizo una modificación dentro del RANGE
("J4:J33") [exactamente después de haber modificado cualquier de sus
celdas, ni cuando estoy dentro, ni antes de la modificación],
Necesito que se COPIE el contenido del RANGE ("O4:O9") en la HOJA2, en
aquel RANGE correspondiente en función de la fecha que haya en CELDA
("F2") (de la HOJA1, claro).
O sea, que si HOJA1;CELDA ("F2") = 06/09/04, el contenido de
HOJA1;RANGE ("O4:O9"), se copiará en HOJA2;RANGE ("J2:J7"). Y así se
copia en un lugar u otro en función de la fecha que indique F2.

-
Las fechas serán hasta 1 año (no más), aunque imagino que no tendré
muchos problemas para modificarlo si al final decido incluir mas
fechas, ¿no?


Ya que estoy, expongo una

2ª PROBLEMÁTICA:

Cuando cierro el XLS, quisiera que me realice un SAVE AS, pero que
este sea AUTOMATICO y TRANSPARENTE. El nombre del FILE.xls, quiero que
sea un dia mas.
Amplio:
Yo trabajo con el file 30-08-04.xls (que es lunes), y cuando lo
cierro, quiero que AUTOMATICAMENTE y de FORMA TRANSPARENTE (sin
preguntar, ni que se vea) me cree un SAVE AS del mismo pero con el
nombre 31-08-04.xls (que es un dia mas, y será el martes). Cuando
llego al viernes, léase, 03-09-04.xls, y lo cierro, quiero que me cree
un SAVE AS con nombre del lunes 06-09-04.xls (y no asi del sábado
04-09-04.xls). Y así siempre.
 

Leer las respuestas

#1 Héctor Miguel
01/09/2004 - 10:38 | Informe spam
hola, victor [VDP] !

... este ultimo problema ... solucion ... varios dias y ni la encuentro [...]



espero haber 'acertado' [o al menos... estar 'cerca de...'] :))
¿comentas?
saludos,
hector.
en el modulo del libro [ThisWorkbook] ==Public Copia As String
Private Sub Workbook_Open()
Dim Dia As Integer, Mes As Integer, Año As Integer, Actual As String
Dia = Left(Me.Name, 2)
Mes = Mid(Me.Name, 4, 2)
Año = 20 & Mid(Me.Name, 7, 2)
Actual = LCase(Format(DateSerial(Año, Mes, Dia), "ddd"))
Select Case Actual
Case "vie", "fri": Dia = Dia + 3
Case "sáb", "sab", "sat": Dia = Dia + 2
Case Else: Dia = Dia + 1
End Select
Copia = Format(DateSerial(Año, Mes, Dia), "dd-mm-yy") & ".xls"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Dir(Copia) <> "" Then Kill Copia
ThisWorkbook.SaveCopyAs Copia
End Sub
en el modulo de 'la hoja' [Hoja1?] ==Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("j4:j33")) Is Nothing Then Exit Sub
Dim Col As Integer: Col = Evaluate("Match(f2,Hoja2!1:1,0)")
Range("o4:o9").Copy Worksheets("Hoja2").Cells(2, Col)
End Sub

Preguntas similares