Excel VBA para atualizar automaticamente a classificação com base na coluna de cálculo?

Anônima
2024-04-12T21:27:07+00:00

Preciso de ajuda com a macro VBA da função de classificação que criei para rastrear meus créditos. Então, basicamente eu tenho 4 colunas:

% Usado Limite de crédito Crédito usado Balanço de Crédito
Calculado (C/B) Atualização manual Atualização manual Calculado (BC)

Macro:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Dim Rng1 As Range

Set Rng1 = Range("C3:C25")

Application.EnableEvents = False

If Not Application.Intersect(Target, Rng1) Is Nothing Then

If Len(Target) > 2 Then

Target.Formula = Target.Value / 100 

End If

Call SetUsageSort

End If

Application.EnableEvents = True

End Sub

Sub SetUsageSort()

Range("A2:E22").Select

ActiveWorkbook.Worksheets("Credits_24").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Credits_24").Sort.SortFields.Add2 Key:=Range("A2:A22"), _

SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Credits_24").Sort

.SetRange Range("A2:D22") 

.Header = xlYes 

.MatchCase = False 

.Orientation = xlTopToBottom 

.SortMethod = xlPinYin 

.Apply 

End With

Range("A1").Select

Application.CutCopyMode = False

End Sub

Qualquer ajuda é apreciada.

Desde já, obrigado.

Microsoft 365 e Office 365 | Instalar, resgatar, ativar | Outros | Outros

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

1 resposta

Classificar por: Mais útil
  1. Anônima
    2024-04-13T07:18:31+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Olá, Tomas Ceelen

    Bem-vindo à comunidade Microsoft.

    Entendemos o problema que você está enfrentando. Infelizmente, o VBA não é suportado na comunidade Microsoft. É mais adequado para publicação no Stack Overflow (somente em inglês).

    Novas perguntas 'vba' - Stack Overflow

    Poste perguntas de programação VBA para Estouro de pilha usando a tag VBA, juntamente com quaisquer outras tags relevantes.

    Observe que o Stack Overflow tem diretrizes como exigir um título descritivo, uma declaração de problema completa e concisa e detalhes suficientes para reproduzir seu problema. Solicitações de recursos ou perguntas excessivamente amplas são consideradas fora do tópico.

    Isenção de responsabilidade: A Microsoft não fornece garantias e/ou garantias, implícitas ou não, e não é responsável pelas informações que você recebe dos sites vinculados de terceiros ou qualquer suporte relacionado à tecnologia.

    Antes de ir para StackOverflow, aqui estão as coisas que você pode melhorar:

    1. **Tratamento de erros**: No seu código original, você usou 'On Error Resume Next', que essencialmente diz ao VBA para ignorar quaisquer erros e continuar executando o código. Isso pode dificultar a depuração de problemas, pois você não será notificado se ocorrer um erro. No código revisado, implementei um método de tratamento de erros mais robusto usando 'On Error GoTo ErrorHandler'. Isso direcionará o VBA para saltar para a seção 'ErrorHandler' se ocorrer um erro. A seção 'ErrorHandler' exibe uma caixa de mensagem com a descrição do erro, ajudando você a identificar e corrigir o problema.
    2. **Uso da palavra-chave 'Me'**: No VBA, 'Me' refere-se ao objeto onde o código está sendo executado. Nesse caso, ele se refere à planilha onde a macro está sendo executada. Usar 'Eu' pode tornar seu código mais robusto, pois ele ainda fará referência à planilha correta, mesmo que o nome da planilha seja alterado.3. **Uso da instrução 'With'**: A instrução 'With' é usada para executar uma série de instruções em um objeto especificado sem requalificar o nome do objeto. No código original, você fez referência repetida a 'ActiveWorkbook.Worksheets("Credits_24"). Classificar'. Ao usar 'Com', você só precisa especificar esse objeto uma vez, tornando seu código mais limpo e potencialmente mais eficiente.4. **Definindo 'Application.EnableEvents' como 'True' no final**: Isso é importante porque se o código parar antes de redefinir 'Application.EnableEvents' para 'True', o Excel deixará de responder aos eventos. Isso pode causar um comportamento inesperado. Ao definir 'Application.EnableEvents' como 'True' na seção 'CleanExit', você garante que ele seja redefinido mesmo se ocorrer um erro.

    Deixarei essa pergunta em aberto caso um de nossos incríveis voluntários tenha ideias para você.

    Yuhao Li

    Suporte técnico da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários