2012-09-03 22:07:34 +0000 2012-09-03 22:07:34 +0000
9
9

Excel VBA "Unselect" procurado

Gostaria que a aparência final após a minha VBA ter terminado de correr estivesse vazia de selecção – para não ter nenhuma célula ou intervalo em qualquer folha colorida (se foi seleccionado o intervalo) ou numa caixa de linhas a negrito (qualquer coisa que tenha sido seleccionada). Pupose: para apresentar ao cliente uma aparência final limpa.

Já procurei e não consigo encontrar como fazer isto. Existe um Unselect de acordo com a EM, mas não parece fazer nada.

Respostas (8)

10
10
10
2013-11-25 13:31:37 +0000

Seleccione qualquer célula e desligue CutCopy:

Range("A1").Select
  Application.CutCopyMode = False
2
2
2
2012-09-05 18:38:48 +0000

O Excel tem sempre algo seleccionado. É necessário um trabalho à volta. Seleccionando uma célula fora do ecrã, o foco será definido aí, para que não funcione em si mesmo. Este código coloca o cursor fora do ecrã e depois volta a rolar a folha para cima para ver A1.

Sub NoSelect()    
  Range("BB100").Select
  ActiveWindow.SmallScroll up:=100
  ActiveWindow.SmallScroll ToLeft:=44
End Sub

Se estiver realmente a querer “nada seleccionado”, pode usar VBA para proteger a folha no final da execução do código, o que fará com que nada seja seleccionado. Pode adicionar isto a uma macro ou colocá-la directamente na sua VBA.

Sub NoSelect()
   With ActiveSheet
   .EnableSelection = xlNoSelection
   .Protect
   End With
End Sub

Assim que a folha estiver desprotegida, o cursor activará uma célula.

2
2
2
2014-09-04 13:06:33 +0000

Há uma forma complicada de o fazer.

Criar um objecto tal como um botão. Seleccione este botão, depois esconda-o, e nenhuma célula será seleccionada.

ActiveSheet.Shapes("Button 1").Visible = True

ActiveSheet.Shapes("Button 1").Select

ActiveSheet.Shapes("Button 1").Visible = False

É isso.

1
1
1
2018-12-20 12:44:14 +0000

Pergunta muito antiga, mas a minha resposta para referência:

Pode usar

With ActiveSheet
    .EnableSelection = xlNoSelection
    .Protect
End With
1
1
1
2015-02-22 19:00:40 +0000

Dependendo do tamanho da sua selecção, para se livrar de qualquer artefacto (não sei se isto também é um problema em 2013 Excel, mas em Mac foi uma dor constante para mim) pode simplesmente percorrer célula por célula e seleccionar cada um deles.

1
1
1
2016-04-11 07:18:46 +0000

Ao desligar a actualização do ecrã antes de seleccionar uma célula, a deslocação para as células seleccionadas é temporariamente desactivada.

Este código verifica que células estão actualmente visíveis e selecciona a primeira célula abaixo do intervalo visível que não está à vista. Por exemplo, quando eu o tento: O intervalo visível é A1:BC79, pelo que este código selecciona A80 e deslocando-se para baixo e para a direita e correndo-o novamente revela que o Excel escolhe a primeira célula NÃO visível abaixo da primeira coluna visível.

Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True
1
1
1
2012-09-05 17:56:56 +0000

A única resposta é enganar.

Esconder coluna A e linha 1

Colocar cursor em A1. Haverá um pequeno ponto no canto de B2.

0
0
0
2016-10-11 16:29:56 +0000

Use um truque: Adicione uma forma, depois seleccione-a e esconda-a.

Código fonte para isto está em resposta a uma pergunta diferente neste site.