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

Excel VBA "Unselect" gesucht

Ich möchte, dass das endgültige Erscheinungsbild nach Beendigung meines VBA-Laufs leer von Auswahlen ist - dass keine Zelle oder kein Bereich auf einem Blatt gefärbt ist (wenn es ein ausgewählter Bereich war) oder in einem fett gedruckten Kasten steht (alles, was ausgewählt war). Zweck: dem Kunden ein ordentliches Endbild zu präsentieren.

Ich habe gesucht und kann nicht finden, wie man das macht. Laut MS gibt es ein Unselect, aber es scheint nichts zu bewirken.

Antworten (8)

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

Wählen Sie eine beliebige Zelle und schalten Sie CutCopy aus:

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

In Excel ist immer etwas ausgewählt. Eine Umgehung ist erforderlich. Wenn Sie eine Zelle außerhalb des Bildschirms auswählen, wird der Fokus dorthin gesetzt, so dass dies an und für sich nicht funktionieren wird. Dieser Code setzt den Cursor außerhalb des Bildschirms und scrollt dann das Blatt wieder nach oben, um A1 anzuzeigen.

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

Wenn Sie wirklich wollen, dass “nichts ausgewählt” wird, können Sie VBA verwenden, um das Blatt am Ende der Codeausführung zu schützen, was dazu führt, dass nichts ausgewählt wird. Sie können dies entweder zu einem Makro hinzufügen oder es direkt in Ihr VBA einfügen.

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

Sobald das Blatt ungeschützt ist, wird der Cursor eine Zelle aktivieren.

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

Es gibt einen trickreichen Weg, dies zu tun.

Erstellen Sie ein Objekt, z. B. eine Schaltfläche. Wählen Sie diese Schaltfläche aus und blenden Sie sie dann aus, damit keine Zelle ausgewählt wird.

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

ActiveSheet.Shapes("Button 1").Select

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

Das war’s.

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

Sehr alte Frage, aber meine Antwort als Referenz:

Sie können

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

Abhängig von der Größe Ihrer Auswahl, um jegliche Artefakte loszuwerden (ich weiß nicht, ob dies auch ein Problem in Excel 2013 ist, aber auf dem Mac war es eine ständige Qual für mich), können Sie einfach Schleife durch Zelle für Zelle und wählen Sie jede.

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

Durch das Ausschalten der Bildschirmaktualisierung vor der Auswahl einer Zelle wird der Bildlauf zu ausgewählten Zellen vorübergehend deaktiviert.

Dieser Code prüft, welche Zellen aktuell sichtbar sind und wählt die erste Zelle unterhalb des sichtbaren Bereichs aus, die nicht in der Ansicht ist. Z.B., wenn ich es versuche: Der sichtbare Bereich ist A1:BC79, also wählt dieser Code A80 aus und wenn ich nach unten und rechts scrolle und ihn erneut ausführe, wählt Excel die erste Zelle unterhalb der ersten sichtbaren Spalte aus, die nicht sichtbar ist.

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

Die einzige Lösung ist zu schummeln.

Spalte A und Zeile 1 ausblenden

Cursor in A1 setzen. Es erscheint ein kleiner Punkt in der Ecke von B2

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

Verwenden Sie einen Trick: Fügen Sie eine Form hinzu, wählen Sie sie dann aus und blenden Sie sie aus.

Quellcode hierfür ist in Antwort auf eine andere Frage auf dieser Seite.