VBAの実行が完了した後の最終的な外観を空にして、シートにセルや範囲を色付けしない(範囲が選択されている場合)か、太い線のボックス(選択されているものはすべて)にする必要があります。目的:クライアントにきちんとした最終的な外観を提示する。
私は検索しましたが、これを行う方法を見つけることができません。 MSによるとUnselectがありますが、何もしないようです。
セルを選択してCutCopy
をオフにします。
Range("A1").Select
Application.CutCopyMode = False
それにはトリッキーな方法があります。
ボタンなどのオブジェクトを作成します。このボタンを選択してから非表示にすると、セルは選択されません。
ActiveSheet.Shapes("Button 1").Visible = True
ActiveSheet.Shapes("Button 1").Select
ActiveSheet.Shapes("Button 1").Visible = False
それでおしまい。
Excelでは常に何かが選択されています。回避策が必要です。画面外のセルを選択すると、そこにフォーカスが設定されるため、それ自体では機能しません。このコードは、カーソルを画面外に置き、シートを上にスクロールして表示しますA1
。
Sub NoSelect()
Range("BB100").Select
ActiveWindow.SmallScroll up:=100
ActiveWindow.SmallScroll ToLeft:=44
End Sub
「何も選択されていない」が本当に必要な場合は、VBAを使用して、コード実行の最後にシートを保護することができます。これにより、何も選択されなくなります。これをマクロに追加するか、VBAに直接配置できます。
Sub NoSelect()
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect
End With
End Sub
シートの保護が解除されるとすぐに、カーソルがセルをアクティブにします。
選択のサイズに応じて、アーティファクトを取り除くには(2013 Excelでもこれが問題かどうかはわかりませんが、Macでは常に悩みました)、セルごとにループして、それぞれを選択します。
セルを選択する前に画面の更新をオフにすると、選択したセルへのスクロールが一時的に無効になります。
このコードは、現在表示されているセルをチェックし、表示されていない表示範囲の下の最初のセルを選択します。たとえば、試してみると、Visbleの範囲はA1:BC79なので、このコードはA80を選択し、右下にスクロールして再度実行すると、Excelが最初の表示列の下に表示されていない最初のセルを選択していることがわかります。
Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1)。 Application.ScreenUpdating = True を選択します。
非常に古い質問ですが、参考のために私の答え:
使用できます
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect
End With
唯一の答えはカンニングすることです。
列A
と行1
を非表示にします
カーソルをA1
に置きます。 B2
の隅に小さなドットが表示されます
これのソースコード は、このサイトの別の質問の答えです。