Alterar macro gravada para afetar a planilha atual

0

Eu tenho uma macro que uso de tempos em tempos. Ele exclui com êxito as colunas que eu quero, mas não classifica as colunas como eu quero. Quando eu depurar o VBA, vejo referências à planilha original do Excel que usei para criar a macro.

Quando reproduz essa macro em uma planilha diferente no mesmo arquivo que é idêntico ao original, nada acontece.

Quais alterações eu tenho que fazer no VBA para que isso funcione em qualquer planilha?

Aqui está o VBA:

Sub HF_weekly_file()
'
' HF_weekly_file Macro
'

'
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Columns("C:N").Select
    Selection.Delete Shift:=xlToLeft
    Columns("D:H").Select
    Selection.Delete Shift:=xlToLeft
    Columns("J:Q").Select
    Selection.Delete Shift:=xlToLeft
    Columns("L:Y").Select
    Selection.Delete Shift:=xlToLeft
    Columns("M:M").Select
    Selection.Delete Shift:=xlToLeft
    Range("A2").Select
    ActiveWorkbook.Worksheets("Leads_1464523080").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Leads_1464523080").Sort.SortFields.Add Key:=Range( _
        "F2:F73"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Leads_1464523080").Sort.SortFields.Add Key:=Range( _
        "G2:G73"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Leads_1464523080").Sort.SortFields.Add Key:=Range( _
        "D2:D73"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Leads_1464523080").Sort.SortFields.Add Key:=Range( _
        "I2:I73"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Leads_1464523080").Sort
        .SetRange Range("A1:M73")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
    
por Allan Levine 29.05.2016 / 14:23

2 respostas

2

Você identificou corretamente o problema: suas referências à planilha estão codificadas, ou seja, você usa o nome da planilha em seu código em vez de uma referência dinâmica a uma planilha. Como resultado, quando você executa o código, ele afeta a planilha chamada "Leads_1464523080" em vez da planilha ativa.

Para fazer seu código classificar a planilha ativa, você precisa alterar cada instância de

ActiveWorkbook.Worksheets("Leads_1464523080")

para

ActiveSheet

Isso fará com que os comandos Classificar se apliquem à planilha ativa no Excel.

    
por 01.06.2016 / 16:06
0

O código a seguir é usado para selecionar uma coluna e excluí-la. É o mesmo código encontrado no início da sua macro. Para editar este código, altere a letra da coluna para a coluna desejada.

Columns("A:A").Select
Selection.Delete Shift:=xlToLeft

Nota: quando a primeira coluna é excluída, ela desloca todas as outras colunas. Exemplo: se você quiser excluir as colunas A e C, se você excluir A, C mudará para B, será necessário excluir B. Isso pode ser simplificado se você remover colunas da direita para a esquerda, pois os turnos não terão efeito.

    
por 29.05.2016 / 14:59