Jump to content
sagostinho

Código vba que seleciona a coluna e a linha onde está a célula activa

Recommended Posts

sagostinho

Olá o código abaixo faz o seguinte seleciona a linha e a coluna onde esta a célula activa. Agora o meu problema é que quando abro o de novo o livro tenho a linha e a coluna pintada o que posso fazer para evitar isso.Obrigado

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

    Static rr
    Static cc

    If cc <> "" Then
        With Columns(cc).Interior
            .ColorIndex = xlNone
        End With
        With Rows(rr).Interior
            .ColorIndex = xlNone
        End With
    End If

    r = Selection.Row
    c = Selection.Column
    rr = r
    cc = c

    With Columns(c).Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    
    
    
    End With
    With Rows(r).Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub

Share this post


Link to post
Share on other sites
paulosemblano

Veja se é isso que você quer:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Rows.Interior.ColorIndex = xlNone

Rows(ActiveCell.Row).Interior.ColorIndex = 6

Columns(ActiveCell.Column).Interior.ColorIndex = 6

ActiveCell.Interior.ColorIndex = xlNone

End Sub

Share this post


Link to post
Share on other sites
sagostinho

Veja se é isso que você quer:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Rows.Interior.ColorIndex = xlNone

Rows(ActiveCell.Row).Interior.ColorIndex = 6

Columns(ActiveCell.Column).Interior.ColorIndex = 6

ActiveCell.Interior.ColorIndex = xlNone

End Sub

B)É isso mesmo obrigado :)

Share this post


Link to post
Share on other sites
sagostinho

Olá este código tem um problema não dá para fazer undo como é que posso contornar essa situação. Obrigado

Share this post


Link to post
Share on other sites
sagostinho

Olá não é "application.undo" é por exemplo  na folha de calculo escrevemos um numero e depois retrocedemos  com este código essa opção não dá para utilizar não sei se me estou a fazer entender

Share this post


Link to post
Share on other sites
jpaulino

Olá não é "application.undo" é por exemplo  na folha de calculo escrevemos um numero e depois retrocedemos  com este código essa opção não dá para utilizar não sei se me estou a fazer entender

VBA não tem undo :)

Share this post


Link to post
Share on other sites
paulosemblano

Conforme o Ajuda do VBA:

Application.Método Undo:

Cancela a última ação na interface do usuário.

Sintaxe:

expressão.Undo

expressão  Uma variável que representa um objeto Application.

Comentários:

Este método desfaz somente a última ação efetuada pelo usuário antes da execução da macro, e precisa ser a primeira linha da macro. Ele não pode ser usado para desfazer comandos do Visual Basic.

Exemplo:

Este exemplo cancela a última ação na interface do usuário. O exemplo precisa ser a primeira linha em uma macro.

Visual Basic for Applications

Application.Undo

Ou este exemplo prático que não permite a inserção de números negativos na célula A1, retornando o valor original:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.EnableCancelKey = xlDisabled

If Plan1.Range("A1").Value < 0 Then

  Application.Undo

  MsgBox "Erro!!!"

End If

Application.EnableEvents = True

Application.ScreenUpdating = True

End Sub

Share this post


Link to post
Share on other sites
jpaulino

@paulosemblano,

Execuções em VBA não têm undo, ou seja, se fizermos algumas operações (como o código que mostrou ao sagostinho), o undo não funciona.

Era necessário guardar as acções efectuadas e estados para depois poder voltar a trás.

Share this post


Link to post
Share on other sites
sagostinho

então não há solução se usar este código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rows.Interior.ColorIndex = xlNone
Rows(ActiveCell.Row).Interior.ColorIndex = 6
Columns(ActiveCell.Column).Interior.ColorIndex = 6
ActiveCell.Interior.ColorIndex = xlNone
End Sub

nunca vou poder usar essa função na folha de calculo?

Share this post


Link to post
Share on other sites
jpaulino

então não há solução se usar este código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rows.Interior.ColorIndex = xlNone
Rows(ActiveCell.Row).Interior.ColorIndex = 6
Columns(ActiveCell.Column).Interior.ColorIndex = 6
ActiveCell.Interior.ColorIndex = xlNone
End Sub

nunca vou poder usar essa função na folha de calculo?

Porque não?

Share this post


Link to post
Share on other sites
sagostinho

porque depois não consigo retroceder na folha de calculo ou há uma maneira de contornar isso

Share this post


Link to post
Share on other sites
jpaulino

porque depois não consigo retroceder na folha de calculo ou há uma maneira de contornar isso

Não consegues retroceder? O que aquele código faz é só colocar uma cor na linha e coluna. Se for preciso retiras a cor.

Share this post


Link to post
Share on other sites
sagostinho

sim ele pinta a linha e a coluna mas tambem me desactiva a função retroceder na folha onde esta o código não sei porque se puderes experimenta  numa folha de excel que vez logo o que eu estou a dizer

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.