エクセルVBA「非選択」募集
VBAの実行が終了した後の最終的な外観を選択から空っぽにしたいのですが、どのシートにもセルや範囲が色付き(範囲が選択されていた場合)、太線のボックス(選択されていたもの)にもないようにしたいです。Pupose: クライアントの最終的な外観を整然としたものにする。
検索してみましたが、この方法が見つかりません。MSによるとUnselectがありますが、何もしていないようです。
VBAの実行が終了した後の最終的な外観を選択から空っぽにしたいのですが、どのシートにもセルや範囲が色付き(範囲が選択されていた場合)、太線のボックス(選択されていたもの)にもないようにしたいです。Pupose: クライアントの最終的な外観を整然としたものにする。
検索してみましたが、この方法が見つかりません。MSによるとUnselectがありますが、何もしていないようです。
任意のセルを選択し、CutCopy
をオフにします。
Range("A1").Select
Application.CutCopyMode = False
エクセルはいつも何かが選択されている。これを回避する方法が必要です。画面外のセルを選択すると、そこにフォーカスが設定されるので、それだけではうまくいきません。このコードでは、カーソルを画面外に配置し、シートをスクロールして 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
シートが保護されなくなるとすぐに、カーソルはセルをアクティブにします。
トリッキーな方法があります。
ボタンなどのオブジェクトを作成します。このボタンを選択してから非表示にすると、セルが選択されなくなります。
ActiveSheet.Shapes("Button 1").Visible = True
ActiveSheet.Shapes("Button 1").Select
ActiveSheet.Shapes("Button 1").Visible = False
以上です。
選択範囲のサイズに応じて、任意のアーチファクトを取り除くために(これは2013年のExcelでも問題かどうかはわかりませんが、Macではそれは私のための一定の痛みでした)、あなただけのセルごとにセルをループして、それぞれを選択することができます。
セルを選択する前に画面更新をオフにすることで、選択したセルへのスクロールが一時的に無効になります。
このコードは、現在どのセルが表示されているかをチェックし、表示されていない最初のセルを選択します。例えば、試してみると 表示範囲はA1:BC79なので、このコードはA80を選択し、下へ右へスクロールして再度実行すると、最初に表示されている列の下に表示されていない最初のセルが選択されていることがわかります。
Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True