2010-04-26 15 views
8

Pracuję w języku VBA i chcę wstawić wiersz w określonej lokalizacji bez wybierania go. Problem, który mam, polega na tym, że po wybraniu tego wiersza arkusz jest przewijany do tego wiersza po zakończeniu działania skryptu. Chcę móc to zrobić bez przewijania arkusza kalkulacyjnego do wstawionego wiersza.Wstawianie wierszy bez wybierania niczego?

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

Nie chcę wybierać A1, aby dostać się na górę.

Odpowiedz

17

Wystarczy to zrobić:

Cells(i,1).EntireRow.Insert 

Zastosuj akcję bezpośrednio do pożądanego zakresu, zamiast wybierać je pierwszy i stosowaniu działań mających na celu „ActiveCell”.

Kilka dodatkowych uwag:

  • „Rejestr makro” funkcja generuje kod jak twój przykład, ale uważam, że wybierając komórkę wcześniej rzadko jest konieczne podczas pisania własnego kodu.
  • Dodatek poboczny: operowanie na komórce bezpośrednio zamiast jej wcześniejszego wyboru może przyspieszyć kod o współczynnik 10x do 100x !!
+0

Doskonale, dzięki! – sooprise

+0

+1 za wzmiankę o skuteczności – Scorchio

5

Rows(i & ":" & i).Insert wstawi wiersz poniżej bez zmiany zaznaczenia.

Powiązane problemy