Executando macro em várias planilhas

0

Eu posso executar macro em planilhas individuais, mas nem todas as planilhas abertas.

Eu quero executar essa macro em 700 planilhas. Estamos tentando excluir uma coluna.

Sub RunMacroOnAllSheetsToRight()
    For i = ActiveSheet.Index To Sheets.Count
        Call MyFunction(i)
    Next i
End Sub

Function MyFunction(i)
    'Code goes here

    Dim lColumn As Long
    Dim iCntr As Long
    lColumn = 5
    'For Each ws In ThisWorkbook.Worksheets

    'For iCntr = lColumn To 1 Step -1
        If IsNumeric(Cells(1, lColumn)) Then
            Columns(lColumn).Delete
        End If
    'Next ws

    MsgBox "I'm currently on sheet " & ThisWorkbook.Sheets(i).Name
End Function
    
por ray 22.04.2015 / 10:19

1 resposta

0

Eu modifiquei MyFunction para que funcionasse:

Function MyFunction(i)
    'Code goes here
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(i)
    Dim lColumn As Long
    Dim iCntr As Long
    lColumn = 5
    'For Each ws In ThisWorkbook.Worksheets

    'For iCntr = lColumn To 1 Step -1
        wks.Activate
        If IsNumeric(wks.Cells(1, lColumn)) Then
            wks.Range(Cells(1, lColumn), Cells(1, lColumn)).EntireColumn.Delete
        End If
    'Next ws

    MsgBox "I'm currently on sheet " & ThisWorkbook.Sheets(i).Name
    Set wks = Nothing
    Set wkb = Nothing
End Function

Eu adicionei as variáveis wkb e wks correspondentes à pasta de trabalho e planilha . Usando essas variáveis, é fácil se referir às células da planilha e excluir a coluna desejada.

Se você precisar executá-lo em mais de 700 planilhas, precisará remover o MessageBox . Além disso, desativar e ativar ScreenUpdating fará com que funcione mais rápido.

    
por 22.04.2015 / 11:19