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

Excel VBA "Unselect" ricercato

Vorrei che l'aspetto finale, dopo che il mio VBA ha finito di funzionare, fosse vuoto di selezione - per non avere nessuna cella o intervallo su nessun foglio colorato (se era selezionato l'intervallo) o in un riquadro di linea in grassetto (tutto ciò che era selezionato). Scopo: presentare al cliente un aspetto finale ordinato.

Ho cercato e non riesco a trovare come fare questo. C'è un Unselect secondo MS, ma non sembra fare nulla.

Risposte (8)

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

Selezionate una cella qualsiasi e disattivate CutCopy:

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

Excel ha sempre qualcosa di selezionato. È necessario un work around. Selezionando una cella fuori dallo schermo si imposta il focus lì, quindi questo non funzionerà di per sé. Questo codice posiziona il cursore fuori dallo schermo e poi fa scorrere il foglio fino a visualizzare A1.

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

Se vuoi davvero che non venga selezionato nulla, puoi usare VBA per proteggere il foglio alla fine dell'esecuzione del tuo codice, il che farà sì che non venga selezionato nulla. Potete aggiungere questo a una macro o metterlo direttamente nel vostro VBA.

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

Non appena il foglio è senza protezione, il cursore attiverà una cella.

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

C'è un modo complicato per farlo.

Create un oggetto come un pulsante. Selezionate questo pulsante, poi nascondetelo e nessuna cella sarà selezionata.

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

ActiveSheet.Shapes("Button 1").Select

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

Tutto qui.

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

Domanda molto vecchia, ma la mia risposta per riferimento:

Puoi usare

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

A seconda delle dimensioni della selezione, per sbarazzarsi di qualsiasi artefatto (non so se questo è anche un problema in Excel 2013, ma su Mac era un dolore costante per me) si può semplicemente fare un ciclo attraverso cella per cella e selezionare ciascuno.

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

Disattivando l'aggiornamento dello schermo prima di selezionare una cella, lo scorrimento verso le celle selezionate è temporaneamente disabilitato.

Questo codice controlla quali celle sono attualmente visibili e seleziona la prima cella sotto l'intervallo visibile che non è in vista. Per esempio, quando lo provo: L'intervallo visibile è A1:BC79, quindi questo codice seleziona A80 e scorrendo in basso e a destra ed eseguendolo di nuovo, excel sceglie la prima cella NON visibile sotto la prima colonna visibile.

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

L'unica risposta è barare.

Nascondi la colonna A e la riga 1

Metti il cursore in A1. Ci sarà un piccolo punto nell'angolo di B2

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

Usa un trucco: Aggiungi una forma, poi selezionala e nascondila.

Codice sorgente per questo è in risposta a un'altra domanda su questo sito.