web-dev-qa-db-fra.com

Définition de la sélection sur Aucune lors de la programmation d'Excel

Lorsque je crée un graphique après avoir utilisé range.copy et range.paste, il laisse la plage de collage sélectionnée et, lorsque je crée un graphique quelques lignes plus tard, il utilise la sélection comme première série du tracé. Je peux supprimer la série, mais existe-t-il un moyen plus élégant de le faire? j'ai essayé 

Set selection = nothing

mais cela ne me laissera pas définir la sélection. J'ai aussi essayé selection.clear, mais cela vient d'effacer les dernières cellules sélectionnées et d'ajouter une série supplémentaire à l'intrigue.

21
Curt
Cells(1,1).Select

Cela vous mènera à la cellule A1, annulant ainsi votre sélection existante.

20
shahkalpesh
Application.CutCopyMode = False
28
David

Sélectionnez n'importe quelle cellule et désactivez le cutcopymode.

Range("A1").Select
Application.CutCopyMode = False
8
user3032537

Juste utiliser

SendKeys "{ESC}"

annulant ainsi votre sélection.

8
TheAxeman

Il existe un moyen de ne rien sélectionner qui résout votre problème.

  1. Créer une forme (un rectangle)
  2. Nommez-le dans la base de formes >>> par exemple: "Prêt" 
  3. Reportez-vous à MYDOC.Shapes ("Ready") et définissez la visibilité sur False

Quand vous voulez qu'Excel SELECT SELECT RIEN le fasse:

MYDOC.Shapes("Ready").visible=True
MYDOC.Shapes("Ready").Select
MYDOC.Shapes("Ready").visible=False

Ceci cache la sélection et rien n’est encore sélectionné dans votre fenêtre.

4
Miguel

Je ne pense pas que cela puisse être fait. Voici du code copié sans aucune modification du site de Chip Pearson: http://www.cpearson.com/Excel/UnSelect.aspx .

UnSelectActiveCell

Cette procédure supprimera la cellule active de la sélection.

Sub UnSelectActiveCell()
    Dim R As Range
    Dim RR As Range
    For Each R In Selection.Cells
        If StrComp(R.Address, ActiveCell.Address, vbBinaryCompare) <> 0 Then
            If RR Is Nothing Then
                Set RR = R
            Else
                Set RR = Application.Union(RR, R)
            End If
        End If
    Next R
    If Not RR Is Nothing Then
        RR.Select
    End If
End Sub

UnSelectCurrentArea

Cette procédure supprimera la zone contenant la cellule active de la sélection.

Sub UnSelectCurrentArea()
    Dim Area As Range
    Dim RR As Range

    For Each Area In Selection.Areas
        If Application.Intersect(Area, ActiveCell) Is Nothing Then
            If RR Is Nothing Then
                Set RR = Area
            Else
                Set RR = Application.Union(RR, Area)
            End If
        End If
    Next Area
    If Not RR Is Nothing Then
        RR.Select
    End If
End Sub
3
Fionnuala

Vous pouvez simplement utiliser ce code à la fin. (Ne pas utiliser Faux) 

Application.CutCopyMode = True
2
RHH1095

Dans Excel 2007, une combinaison utilisant les propriétés select et CutCopyMode permet de réinitialiser toutes les sélections. Cela a fonctionné pour mon cas d'utilisation.

Application.CutCopyMode = xlCopy
ActiveSheet.Range("A" & lngRow).Select

Cordialement Madhur

1
Madhur Kashyap

J'avais ce problème avec Excel 2013. J'avais le jeu "congeler les volets", ce qui était à l'origine du problème. Le problème a été résolu lorsque j'ai retiré les vitres gelées. 

1
JustinMT

Aucune des nombreuses réponses avec Application.CutCopyMode ou .Select n'a fonctionné pour moi.

Mais j'ai trouvé une solution qui n'a pas été postée ici et qui a fonctionné à merveille pour moi! 

De StackExchange SuperUser: Excel VBA "Désélectionner" recherché

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.

J'espère que cela aide quelqu'un avec le même problème!

0
kdo53

Selection(1, 1).Select sélectionnera uniquement la cellule en haut à gauche de votre sélection actuelle.

0
Patrick Honorez

Si vous utilisez un bouton pour appeler la procédure de collage,

essayez d'activer le bouton après l'opération. cela efface avec succès la sélection 

sans pour autant 

  • avoir à perdre son temps avec des choses cachées 
  • sélection d'une autre cellule (exactement le contraire de ce qui a été demandé) 
  • affectant le mode presse-papier
  • avoir la méthode hacky de presser échappement qui ne fonctionne pas toujours

HTH

Sub BtnCopypasta_Worksheet_Click()
   range.copy
   range.paste
BtnCopypasta.Activate
End sub

HTH

0
Garreth Tinsley

Vous pouvez définir le Application.ScreenUpdating = False et sélectionner une cellule de vue, puis définir le .ScreenUpdating sur true. Cela ne montrerait au moins aucune cellule sélectionnée dans la vue actuelle.

0
Jaaahn

Si vous sélectionnez une cellule dans une plage déjà sélectionnée, cela ne fonctionnera pas. Mais, la sélection d'une plage en dehors de la sélection d'origine effacera la sélection d'origine.

' * Sélection d'origine * ' ActiveSheet.range ("A1: K10"). Sélectionnez

' * Nouvelles sélections * ' Activesheet.Range ("L1"). Select

' * Ensuite * ' Activesheet.Range ("A1"). Sélectionnez

0
Phil

J'ai essayé toutes vos suggestions, pas de chance, mais voici une idée qui m'a fonctionné.

Plage ("AAA1000000"). Activer

Plage ("A1"). Activer

Gars

0
Guy