2012-09-03 22:07:34 +0000 2012-09-03 22:07:34 +0000
9
9

Excel VBA "Unselect" chciał

Chciałbym, aby wygląd końcowy po zakończeniu działania VBA był pusty od zaznaczeń – aby żadna komórka lub zakres na arkuszu nie była pokolorowana (jeśli był zaznaczony zakres) lub w pogrubionym polu linii (cokolwiek, co zostało zaznaczone). Cel: przedstawienie klientowi schludnego wyglądu końcowego.

Szukałem i nie mogę znaleźć jak to zrobić. Istnieje opcja Unselect według MS, ale wydaje się, że nic nie robi.

Antworten (8)

10
10
10
2013-11-25 13:31:37 +0000

Zaznacz dowolną komórkę i wyłącz CutCopy:

Range("A1").Select
  Application.CutCopyMode = False
2
2
2
2012-09-05 18:38:48 +0000

Excel zawsze ma coś zaznaczone. Potrzebne jest obejście tego problemu. Zaznaczenie komórki poza ekranem ustawi tam fokus, więc to nie będzie działać samo w sobie. Ten kod umieszcza kursor poza ekranem, a następnie przewija arkusz z powrotem do widoku A1.

Sub NoSelect()    
  Range("BB100").Select
  ActiveWindow.SmallScroll up:=100
  ActiveWindow.SmallScroll ToLeft:=44
End Sub

Jeśli naprawdę chcesz, aby “nic nie zostało wybrane”, możesz użyć VBA do zabezpieczenia arkusza na końcu wykonywania kodu, co spowoduje, że nic nie zostanie wybrane. Możesz dodać to do makra lub umieścić bezpośrednio w VBA.

Sub NoSelect()
   With ActiveSheet
   .EnableSelection = xlNoSelection
   .Protect
   End With
End Sub

Gdy tylko arkusz zostanie odbezpieczony, kursor aktywuje komórkę.

2
2
2
2014-09-04 13:06:33 +0000

Istnieje podstępny sposób, aby to zrobić.

Stwórz obiekt, taki jak przycisk. Wybierz ten przycisk, a następnie ukryj go, a żadna komórka nie zostanie wybrana.

ActiveSheet.Shapes("Button 1").Visible = True

ActiveSheet.Shapes("Button 1").Select

ActiveSheet.Shapes("Button 1").Visible = False

To jest to.

1
1
1
2018-12-20 12:44:14 +0000

Bardzo stare pytanie, ale moja odpowiedź dla odniesienia:

Możesz użyć

With ActiveSheet
    .EnableSelection = xlNoSelection
    .Protect
End With
```.
1
1
1
2015-02-22 19:00:40 +0000

W zależności od wielkości zaznaczenia, aby pozbyć się artefaktów (nie wiem, czy jest to również problem w Excelu 2013, ale na Macu był to dla mnie stały ból), możesz po prostu zapętlić komórkę po komórce i wybrać każdą z nich.

1
1
1
2016-04-11 07:18:46 +0000

Wyłączenie aktualizacji ekranu przed wybraniem komórki powoduje tymczasowe wyłączenie przewijania do wybranych komórek.

Ten kod sprawdza, które komórki są aktualnie widoczne i wybiera pierwszą komórkę poniżej widocznego zakresu, która nie jest na widoku. Na przykład, kiedy próbuję to zrobić: Visble range to A1:BC79, więc ten kod wybiera A80 i przewijając w dół i w prawo i uruchamiając go ponownie ujawnia, że excel wybiera pierwszą komórkę NIE widoczną poniżej pierwszej widocznej kolumny.

Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True
1
1
1
2012-09-05 17:56:56 +0000

Jedyną odpowiedzią jest oszukiwanie.

Ukryj kolumnę A i wiersz 1

Umieść kursor w A1. W rogu B2 pojawi się mała kropka.

0
0
0
2016-10-11 16:29:56 +0000

Użyj sztuczki: Dodaj kształt, a następnie zaznacz go i ukryj.

Kod źródłowy do tego jest w odpowiedzi na inne pytanie na tej stronie.