ERRO DE EXECUÇÃO CO...
 
Notifications
Clear all

ERRO DE EXECUÇÃO CODIGO

3 Posts
3 Usuários
0 Reactions
798 Visualizações
(@denilsonsl)
Posts: 84
Trusted Member
Topic starter
 

Boa tarde.

Esse código abaixo não esta deixando dar Ctrl+C - Ctrl+V, dentro do espaço onde esta marcado com a coloração do interior das células.

Será que esqueci de algum detalhe no código?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
    'O OBJETO "TARGET" RECEBE A CÉLULA QUE ACABA DE SER SELECIONADA,
    'POR CLIQUE DO MOUSE OU PELO TECLADO

    'DESCOBRINDO QUAL A ÚLTIMA LINHA PREENCHIDA NA PLANILHA
    ULTIMA = Range("A3").End(xlDown).Row
  
    'SAIR DO PROCEDIMENTO SE A CÉLULA SELECIONADA NÃO ESTIVER ENTRE AS LINHAS 7 E A ÚLTIMA PREENCHIDA.
    If Target.Row < 3 Or Target.Row > ULTIMA Then Exit Sub
      
    'SAIR DO PROCEDIMENTO SE A CÉLULA SELECIONADA NÃO ESTIVER ENTRE AS COLUNAS 1 E 47 (DE A ATÉ AU).
    If Target.Column < 1 Or Target.Column > 47 Then Exit Sub
  
    'APLICANDO PADRÃO INICIAL EM TODAS AS CÉLULAS DA TABELA
    With Range("A3" & ":AU" & ULTIMA)
    .Interior.Pattern = xlNone
    .Interior.TintAndShade = 0
    .Interior.PatternTintAndShade = 0
    .Font.Bold = False
    End With
  
    'COM A LINHA SELECIONADA (TARGET.ROW), DEFININDO FORMATAÇÃO DE DESTAQUE
    With Range("A" & Target.Row & ":AU" & Target.Row)
    .Interior.Pattern = xlSolid
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ThemeColor = xlThemeColorAccent1
    .Interior.TintAndShade = 0.1
    .Interior.PatternTintAndShade = 0
    .Font.Bold = True
    End With
    
Application.ScreenUpdating = True
End Sub
 
Postado : 23/12/2015 12:04 pm
(@mprudencio)
Posts: 2749
Famed Member
 

O que vc quer fazer afinal???

Muitas vezes corrigir o codigo da mais trabalho do que escrever um novo corretamente.

Outra coisa disponibilize um modelo (arquivo excel) de exemplo

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 23/12/2015 12:45 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O que vc quer fazer afinal???
Muitas vezes corrigir o codigo da mais trabalho do que escrever um novo corretamente.
Outra coisa disponibilize um modelo (arquivo excel) de exemplo

Marcelo, me desculpe se estiver sendo grosseiro, mas se analisar a rotina postada, verá que estamos utilizando o Evento Worksheet_SelectionChange, e em consequencia as instruções serão executadas assim que selecionar as celulas que estão dentro do range definido e irá colorir a linha "SELECIONADA" e ao selecionar outra, tira a cor da selecionada anteriormente e colore a mesma.
Então devido ao Evento, se utilizarmos o CTRL+C ou o botão direito do mouse para copiar, ao selecionarmos outra celula o evento é chamado e automaticamente desabilitado o CTRL+V e a opção Colar e se na rotina tivermos "ActiveSheet.Paste" será emitida mensagem de erro.
Desta forma, não precisaríamos de um modelo especifico, e não vi duvida quanto da pergunta.

Voltando a questão e, acredito ter relação com o seu outro tópico sobre personalizar mensagem de ERROS, podemos utilizar uma "gambiarra" verificando se temos algo copiado e colar automáticamente antes das instruções do Evento terminarem, então tente da seguinte forma :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    'O OBJETO "TARGET" RECEBE A CÉLULA QUE ACABA DE SER SELECIONADA,
    'POR CLIQUE DO MOUSE OU PELO TECLADO
    
    'DESCOBRINDO QUAL A ÚLTIMA LINHA PREENCHIDA NA PLANILHA
    ULTIMA = Range("A3").End(xlDown).Row

    'Verifica se tem dados Copiados e vai para a rotina teste para colar
    If Application.CutCopyMode > 0 Then
        MsgBox "Tem dados Copiados, e vamos cola-los."
        Call ColarAutomatico
    End If

    'SAIR DO PROCEDIMENTO SE A CÉLULA SELECIONADA NÃO ESTIVER ENTRE AS LINHAS 7 E A ÚLTIMA PREENCHIDA.
    If Target.Row < 3 Or Target.Row > ULTIMA Then Exit Sub

    'SAIR DO PROCEDIMENTO SE A CÉLULA SELECIONADA NÃO ESTIVER ENTRE AS COLUNAS 1 E 47 (DE A ATÉ AU).
    If Target.Column < 1 Or Target.Column > 47 Then Exit Sub

        'APLICANDO PADRÃO INICIAL EM TODAS AS CÉLULAS DA TABELA
        With Range("A3" & ":AU" & ULTIMA)
            .Interior.Pattern = xlNone
            .Interior.TintAndShade = 0
            .Interior.PatternTintAndShade = 0
            .Font.Bold = False
        End With
        
        'COM A LINHA SELECIONADA (TARGET.ROW), DEFININDO FORMATAÇÃO DE DESTAQUE
        With Range("A" & Target.Row & ":AU" & Target.Row)
            .Interior.Pattern = xlSolid
            .Interior.PatternColorIndex = xlAutomatic
            .Interior.ThemeColor = xlThemeColorAccent1
            .Interior.TintAndShade = 0.1
            .Interior.PatternTintAndShade = 0
            .Font.Bold = True
        End With

Application.ScreenUpdating = True

End Sub

Sub ColarAutomatico()

    ActiveSheet.Paste
    
End Sub

Teste e veja se da certo.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/12/2015 1:47 pm