Visual Basic para Aplicaciones - Rellenar número variable de celdas hacia la derecha

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Rellenar número variable de celdas hacia la derecha

Publicado por Celia H. (5 intervenciones) el 16/05/2018 15:08:21
Hola a todos!
A ver si alguien es tan amable de echarme una mano con una duda.

Tengo el siguiente código que me lee dos columnas de datos, una con códigos de materiales y otra con fechas en una hoja llamada "Materials", y me coloca un 1 en otra hoja llamada "Calendar" en la celda que corresponde con la fecha (fila 1) y el código del material (columna 1).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
Sub test3()
Dim wsSrc As Worksheet, wsDst As Worksheet
Dim rngSrc As Range, rngDst As Range, cell As Range
Dim r As Range, rngCal As Range, rf As Variant, f As Variant
Set wsSrc = Sheets("Materials")
Set rngSrc = wsSrc.Range("A2:A" & wsSrc.UsedRange.Rows.Count)
 
Set wsDst = Sheets("Calendar")
Set rngDst = wsDst.Range("B2:B" & wsDst.UsedRange.Rows.Count)
Set rngCal = wsDst.Range("D4", wsDst.Cells(1, wsDst.UsedRange.Columns.Count))
 
Dim rngSrc2 As Range, rngDst2 As Range, cell2 As Range
Dim r2 As Range, rngCal2 As Range, rf2 As Variant, f2 As Variant, inter As Range, rng As Range, num As Integer
 
Set rngDst2 = wsDst.Range("B2:B" & wsDst.UsedRange.Rows.Count)
Set rngCal2 = wsDst.Range("D2", wsDst.Cells(1, wsDst.UsedRange.Columns.Count))
 
Set rngSrc2 = wsSrc.Range("A2:A" & wsSrc.UsedRange.Rows.Count)
 
For Each cell In rngSrc
 
Set r = rngDst.Find(cell.value, lookat:=xlWhole)
If Not r Is Nothing Then
f = cell.Offset(, 1).value
Set rf = rngCal.Find(f, lookat:=xlWhole)
 
If Not rf Is Nothing Then
rf.Offset(r.Row - 1) = 1
End If
End If
 
Next
End Sub

Funciona correctamente, pero ahora tengo otra columna en la hoja "Materials" con duraciones de tiempo en días (columna D). En la hoja calendar: Un día = una columna. Ahora, me gustaría que además de poner el 1 tal cual lo hace en la celda correspondiente, me pusiera un 1 en cada celda siguiente (cada día), de duración marcada por la columna D de la hoja "Material".

No sé si me he explicado bien... díganme si hace falta alguna aclaración.

¡Muchas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder