¿Alguien puede explicarme con detalle que hace el siguiente código de una macro por favor?

Hola a todos me pueden ayudar a entender el siguiente código ya que necesito replicar algo similar a lo que hace esta macro pero no entiendo bien todo:

Sub NO_CODIGOS()


Dim base As Worksheet
Set base = Worksheets("RAD AMCM")
ren = 2 COL = 33 ren2 = 2

Sheets("NO CÓDIGOS").Select

Do While base.Cells(ren, 1) <> ""

COL = 33

entro = 0

Do While COL <= 105

If base.Cells(ren, COL) >= 1 Then

Select Case base.Cells(ren, COL)

Case 1 To 8, 11 To 24, 26 To 30, 34 To 51, 53 To 60, 62, 65, 68, 70, 73 To 80, 86 To 89, 91, 92, 94 To 99, 101

Case Else

col2 = COL - 26

Cells(ren2, col2) = base.Cells(ren, COL)

entro = 1

End Select

End If

COL = COL + 1

Loop

If entro = 1 Then

Cells(ren2, 1) = base.Cells(ren, 1)

Cells(ren2, 2) = base.Cells(ren, 2)

Cells(ren2, 3) = base.Cells(ren, 3)

Cells(ren2, 4) = base.Cells(ren, 4)

Cells(ren2, 5) = base.Cells(ren, 5)

Cells(ren2, 6) = base.Cells(ren, 29)

ren2 = ren2 + 1

End If

ren = ren + 1

Loop

End Sub

1 Respuesta

Respuesta
1

Te explico en cada línea:

Sub NO_CODIGOS()
Dim base As Worksheet
'establece la hoja Rad en una variable 'base'
Set base = Worksheets("RAD AMCM")
'se asignan valores a las variables: fila origen = 2, col origen = 33, fila destino = 2
ren = 2 COL = 33 ren2 = 2
 'selecciona hoja NO CODIGOS (hoja destino)
'Bucle A: se ejecuta un bucle recorriendo col A de hoja 'base' hasta una celda vacía: fin del proceso
Do While base.Cells(ren, 1) <> ""
'asigna valores a las variables
 COL = 33
 entro = 0
'Bucle B: se ejecuta mientras la col sea <= 105
 Do While COL <= 105
'si la celda origen es >= 1 se controla que no se trate de algún valor indicado en esos rangos de valores
 If base.Cells(ren, COL) >= 1 Then
 Select Case base.Cells(ren, COL)
 Case 1 To 8, 11 To 24, 26 To 30, 34 To 51, 53 To 60, 62, 65, 68, 70, 73 To 80, 86 To 89, 91, 92, 94 To 99, 101
 Case Else
'si no corresponde a esos rgos de valores, se asigna col destino como col origen-26
 col2 = COL - 26
'y se coloca el valor de la celda en hoja destino (NO CODIGOS)
 Cells(ren2, col2) = base.Cells(ren, COL)
'se marca la variable para indicar que se realizó un pase
 entro = 1
 End Select
 End If
'se pasa a la col sgte y se repite el bucle B
 COL = COL + 1
 Loop
'al finalizar el recorrido hasta la col 105, se consulta si se hizo un pase
If entro = 1 Then
'x Si, se guarda en fila destino los valores de hoja 'base' fila origen
Cells(ren2, 1) = base.Cells(ren, 1)
Cells(ren2, 2) = base.Cells(ren, 2)
Cells(ren2, 3) = base.Cells(ren, 3)
Cells(ren2, 4) = base.Cells(ren, 4)
Cells(ren2, 5) = base.Cells(ren, 5)
Cells(ren2, 6) = base.Cells(ren, 29)
'se incrementa la fila destino
ren2 = ren2 + 1
End If
 'se incrementa fila origen y se repite el bucle A
ren = ren + 1
Loop
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas