2010-04-26 4 views
8

Je travaille dans VBA et je veux insérer une ligne dans un endroit spécifique sans le sélectionner. Le problème que j'ai est que, après que la ligne est sélectionnée, la feuille de calcul est défilée jusqu'à cette ligne lorsque le script est en cours d'exécution. Je veux être en mesure de le faire sans que la feuille de calcul ne défile jusqu'à la ligne insérée.Insertion de lignes sans sélectionner quoi que ce soit?

Rows(i & ":" & i).Select 
ActiveCell.EntireRow.Insert 

Je ne veux pas sélectionner A1 pour atteindre le sommet.

Répondre

17

Il suffit de faire ceci:

Cells(i,1).EntireRow.Insert 

Appliquer l'action directement à la plage souhaitée, au lieu de le sélectionner d'abord et l'application de l'action à « activecell ».

Quelques notes supplémentaires:

  • Le « enregistrer une macro » caractéristique génère du code comme votre exemple, mais je trouve que la sélection de la cellule à l'avance est rarement nécessaire lors de l'écriture de votre propre code.
  • Un avantage secondaire: opérer directement sur la cellule au lieu de la sélectionner en premier peut accélérer votre code d'un facteur de 10x à 100x !!
+0

Excellent, merci! – sooprise

+0

+1 pour avoir mentionné la performance – Scorchio

5

Rows(i & ":" & i).Insert va insérer une ligne ci-dessous sans changer la sélection.

Questions connexes