2013-04-10 9 views

Odpowiedz

20

Różnica polega na ich elastyczności.

Activate opłacanie wymienionych arkuszy aktywny blachy, i mogą być stosowane tylko do pojedynczego arkusza

Select umożliwić ewentualnie rozciągającą aktualnie wybrane arkusze zawierają określony arkusza np

Worksheets("Sheet2").Select Replace:=False 

, a także umożliwia wybór tablicy arkuszy:

Sheets(Array("Sheet3", "Sheet2")).Select 

W minimalnej formie Select i Activate zrobić to samo.

Na przykład, jeśli tylko jeden arkusz jest aktualnie wybrany (powiedzmy Sheet3) lub, jeśli więcej niż jeden arkusz jest wybrany, ale bez powiedzieć Sheet2, następnie Worksheets("Sheet2").Select i Worksheets("Sheet2").Activate zarówno aby Sheet2 jedynym wybrane i aktywny arkuszy.

Z drugiej strony, jeśli mówią zarówno Sheet2 i Sheet3 są wybierane i Sheet2 jest aktywny arkusz, a następnie Worksheets("Sheet3").Activate pozostawia wybrany oba arkusze i sprawia Sheet3 aktywny arkusz, natomiast Worksheets("Sheet2").Select sprawia Sheet3 jedynym wybrany i aktywny arkusz.

+0

+1 miłe szczegóły @chris – glh

+0

Myślę, że muszę dodać, że wydaje się, że istnieje różnica między: a) Arkusze (Array ("Arkusz2", "Arkusz3")) Wybierz i b) Arkusze (Array ("Arkusz3", "Arkusz2")) .Wybierz => W a) "Arkusz2" jest aktywny później, w b) "Arkusz3" jest aktywny później. => Zawsze pierwszy na liście. – jreichert

12

.activate kliknięcie zakładki arkusza roboczego.

.select Symuluje wykonywanie kontroli i klikanie w kartę. W VBA nie jesteś jeszcze w arkuszu.

Możesz .select więcej niż jeden arkusz, ale tylko jeden .activate.

0

Aby rozwinąć powyższe: Gdy poniższy kod zostanie uruchomiony z Zamień: = Fałsz, zdarzenie dezaktywacji arkusza nie występuje na arkuszu 4. Jeśli zamiast tego zostanie użyty Zastąp: = Prawda, zdarzenie aktywujące zostanie uruchomione.

Zapobieganie zdarzeniu jest pożądane w większości przypadków, ponieważ może spowodować nieoczekiwane zachowanie.

Oznacza to, że select jest tylko odpowiednikiem CTRL + Kliknięcie karty arkusza zastępczego IF: = false.

pkt a

Dim rng As Range 

Sheet4.Select Replace:=False 
Set rng = Selection 

Sheet5.Select Replace:=True 
Selection = rng.Value 

End Sub

Dzięki za swoich postach, jak to pomogło mi zrozumieć różnicę.

Harvey

Powiązane problemy