2012-07-18 8 views
10

We wcześniejszych wersjach programu Excel naciśnięcie CTRL + A w arkuszu roboczym dosłownie wybiera wszystkie komórki. W programie Excel 2010 (nie jestem pewien co do roku 2007 lub 2003) zauważyłem, że jeśli naciśniesz CTRL + A w bloku komórek zawierających wartości, wydaje się, że wiesz, aby wybrać tylko komórki w tym bloku. Na przykład, jeśli wszystkie komórki w zakresie A1: D10 zawierają wartości i uderzysz CTRL + A, gdy aktywna komórka znajduje się w tym zakresie, wybierzesz tylko A1: D10. Jeśli ponownie naciśniesz CTRL + A, tylko wtedy faktycznie zaznaczysz wszystkie komórki w arkuszu.Jaki jest kod VBA, aby emulować wybieranie bloku za pomocą skrótu CTRL + A?

Więc zapisałem makro, aby zobaczyć, jaki kod makra był generowany, gdy robię to, ale faktycznie pisze Range("A1:D10").Select po naciśnięciu CTRL + A. Jest to ograniczenie, a nie dynamika, ponieważ teraz muszę napisać własną logikę, aby określić granice wokół aktywnej komórki. To nie jest trudne z metodami takimi jak ActiveCell.End(xlDown), ale nie chciałbym tutaj wymyślać koła.

Czy jest jakaś metoda Excel VBA, taka jak ActiveCell.GetOuterRange.Select? To byłoby miłe.

Odpowiedz

19

Dla wszystkich zabrudzonych komórek można;

ActiveSheet.UsedRange.Select 

Lub dla komórek otaczających bieżącą komórkę w sposób ciągły można;

ActiveCell.CurrentRegion.Select