web-dev-qa-db-fra.com

Excel VBA "Désélectionner" recherché

Je voudrais que l'apparence finale une fois que mon VBA soit terminé, soit vide de sélection - aucune cellule ou plage sur une feuille de couleur (si elle était sélectionnée) ou dans une zone de ligne en gras (tout ce qui a été sélectionné). Pupose: présenter au client une apparence finale soignée.

J'ai cherché et je ne trouve pas comment faire cela. Il existe un Unselect selon MS, mais il ne semble rien faire.

9
Gary

Sélectionnez une cellule et désactivez CutCopy:

  Range("A1").Select
  Application.CutCopyMode = False
9
user276802

Il y a une façon délicate de le faire.

Créez un objet tel qu'un bouton. Sélectionnez ce bouton, puis masquez-le et aucune cellule ne sera sélectionnée.

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

ActiveSheet.Shapes("Button 1").Select

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

C'est tout.

2
user364941

Excel a toujours quelque chose de sélectionné. Un travail est nécessaire. La sélection d'une cellule en dehors de l'écran définira le focus là-bas, de sorte que cela ne fonctionnera pas en soi. Ce code place le curseur en dehors de l'écran, puis fait défiler la feuille pour afficher A1.

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

Si vous ne voulez vraiment rien sélectionner, vous pouvez utiliser VBA pour protéger la feuille à la fin de l'exécution de votre code, ce qui empêchera la sélection. Vous pouvez soit ajouter ceci à une macro ou le mettre directement dans votre VBA.

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

Dès que la feuille n'est plus protégée, le curseur activera une cellule.

2
CharlieRB

En fonction de la taille de votre sélection, pour vous débarrasser de tout artefact (je ne sais pas si c'est également un problème dans Excel 2013, mais sur Mac c'était une douleur constante pour moi), vous pouvez simplement parcourir cellule par cellule et sélectionnez chacun.

1
Jason Pevitt

En désactivant la mise à jour de l'écran avant de sélectionner une cellule, faire défiler les cellules sélectionnées est temporairement désactivé.

Ce code vérifie les cellules actuellement visibles et sélectionne la première cellule située en dessous de la plage visible qui n’est pas visible. Par exemple, lorsque je l’essaie: la plage Visble est A1: BC79. Ce code sélectionne donc A80 et fait défiler la liste vers le bas, puis vers la droite, puis la réexécute révèle que Excel choisit la première cellule NON visible en dessous de la première colonne visible.

 
 Dim r As Range 
 Application.ScreenUpdating = False 
 Définir r = Application.ActiveWindow.VisibleRange 
 R (r.Cells.Count + 1). Sélectionnez 
 Application.ScreenUpdating = True 
 
1
Tobias Carlén

Très vieille question, mais ma réponse pour référence:

Vous pouvez utiliser

With ActiveSheet
    .EnableSelection = xlNoSelection
    .Protect
End With
1
Joost

La seule réponse est de tricher.

Masquer la colonne A et la ligne 1

Placez le curseur dans A1. Il y aura un petit point dans le coin de B2

1
SeanC

Utilisez une astuce: ajoutez une forme, puis sélectionnez-la et masquez-la.

Le code source de cette est une réponse à une question différente sur ce site.

0
miroxlav