Mejorar código en columnas intermedias

Experto tengo este código

Sub CerosEnCeldas()
With Range("BH1:BH217")
.NumberFormat = "@"
.Value = Evaluate("=transpose(transpose(text(BH1:BH217, ""0000"")))")
End With
End Sub

pero necesito ejecutarlo en columnas intermedias 

me explico que se ejecute en las columnas A,C,E,G,I,K,M,O,Q,S,U,W,Y,AA

Respuesta
1

Adjunto la macro ajustada. Solo te queda completar las letras dentro del Array. No olvides pegar también la primer instrucción donde indico que el Array empieza a contar desde 1 y no desde 0 que es lo predeterminado.

Option Base 1
Sub CerosEnCeldasOrig()
'ajustada x Elsamatilde
letras = Array("A", "C", "E", "G")   'completar letras
'se ejecuta en col alternas a partir de la A (1) hasta AA (27)
x = 1
For i = 1 To 27 Step 2
    With Range(Cells(1, i), Cells(217, i))
        .NumberFormat = "@"
        .Value = Evaluate("=transpose(transpose(text(" & letras(x) & "1:" & letras(x) & "217, ""0000"")))")
        x = x + 1
    End With
Next i
End Sub

Si no querés tomarte el trabajo de llenar las letras podés utilizar esta otra macro que hace lo mismo.

Sub CerosEnCeldas()
'x Elsamatilde
Application.ScreenUpdating = False
'se ejecuta en col alternas a partir de la A (1) hasta AA (27)
For i = 1 To 27 Step 2
    'se asigna formato texto y se completa con 0 delante
    For x = 1 To 217
        If Len(Cells(x, i)) < 4 Then
            cadena = "": Cells(x, i).NumberFormat = "@"
            For Y = 1 To 4 - Len(Cells(x, i))
                cadena = cadena & "0"
            Next Y
            Cells(x, i) = cadena & Cells(x, i)
        End If
    Next x
Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas