2008-11-15 8 views
17

Lorsque je crée un graphique après avoir utilisé range.copy et range.paste, il laisse la plage de collage sélectionnée, puis lorsque je crée un graphique quelques lignes plus tard, il utilise la sélection comme première série dans le tracé. Je peux supprimer la série, mais y a-t-il une façon plus élégante de le faire? J'ai essayéComment définir la sélection sur Nothing lors de la programmation d'Excel en utilisant VBA?

Set selection = nothing 

mais il ne me laissera pas définir la sélection. J'ai aussi essayé selection.clear, mais cela a juste effacé les dernières cellules qui ont été sélectionnées, et ajouté encore une série supplémentaire à l'intrigue.

+0

Pourquoi ne pas simplement sélectionner la première série? –

Répondre

18
Cells(1,1).Select 

Il vous amène à la cellule A1, annulant ainsi votre sélection existant.

+0

J'ai essayé ceci, et il ajoute toujours une série supplémentaire à l'intrigue. Fait intéressant, je trace un deuxième graphique immédiatement après cela, et il n'a pas la série supplémentaire. – Curt

2

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

UnSelectActiveCell

Cette procédure va supprimer 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 
0

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

22
Application.CutCopyMode = False 
+0

Excel 2010 VBA - Je voulais désélectionner une plage (c.-à-d. Supprimer la bordure animée en pointillés) après l'avoir copiée et collée dans vba. La solution acceptée n'a pas fonctionné pour moi (ni curieusement pour l'OP il semblerait ??) mais celui-ci a fait. –

1

Dans Excel 2007, une combinaison utilisant les propriétés select et CutCopyMode, il est possible 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

3

Il est un moyen de sélectionner rien qui résoudre votre problème.

  1. Créer une forme (un rectangle)
  2. Nom dans la base de données Formes >>> par exemple: « Prêt »
  3. Reportez-vous à elle MYDOC.Shapes (« Prêt ») et changer la visibilité sur False

Lorsque vous voulez que Excel SELECT rien faire:

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

Cette sélection et la CACHER rien encore sélectionné en vous r window PLUS: Le mot «Prêt» est affiché en haut à gauche de votre feuille.

7

Il suffit d'utiliser

SendKeys "{ESC}"

annulant ainsi votre sélection.

+0

C'est un génie. Merci! –

+0

ne semble pas fonctionner sur Excel 2013 – MusuNaji

7

Sélectionnez une cellule et désactivez le cutcopymode.

Range("A1").Select 
Application.CutCopyMode = False 
0

Selection(1, 1).Select sélectionnera uniquement la cellule supérieure gauche de votre sélection actuelle.

0

Si vous utilisez un bouton pour appeler la procédure de pâte,

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

sans

  • avoir à déranger avec des choses cachées
  • sélectionnant une autre cellule (qui est exactement le contraire de ce qui a été demandé)
  • affectant le mode de presse-papiers
  • avoir la méthode hacky de presser échapper qui ne fonctionne pas toujours

HTH

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

HTH

0

Essayé toutes vos suggestions, pas de chance, mais voici une idée qui a fonctionné pour moi sélectionner une cellule de votre plage de sélection (par exemple AAA1000000) puis sélectionnez l'A1 à nouveau

Range ("AAA1000000"). Activer

Range ("A1"). Activer

Guy

1

J'ai rencontré ce problème avec Excel 2013. J'avais un "gel des volets", ce qui a causé le problème. Le problème a été résolu lorsque j'ai supprimé les volets gelés.

2

Vous pouvez simplement utiliser ce code à la fin. (N'utilisez pas Faux)

Application.CutCopyMode = True 
+0

Vous ne savez pas pourquoi ce n'est pas la solution acceptée. – NapkinBob