ラベル VBA 用途別 の投稿を表示しています。 すべての投稿を表示
ラベル VBA 用途別 の投稿を表示しています。 すべての投稿を表示

2016/03/14

マクロでセルの移動方向を制御する

マクロでセルの移動方向を制御する

Enter キーを押したとき、セルは下に移動します(初期設定)。
[オプション]からセルの移動方向を上下左右に変更することができます。

1)『オプション』メニューからセルの移動方向を変更する方法

『ファイル』⇒『オプション』⇒『詳細設定』⇒『Enterキーを押したら、セルを移動する(M)』で変更できます。
上・下・左・右の4方向から選びます。





この変更方法は、すべてのExcelファイルに対して設定が反映されます。
つまり、ファイルAを開いているときにセルの移動方向を『右』に設定すると、ファイルBを開いたときも
セルの移動方向は『右』になります。

特定のファイルだけセルの移動方向を変更したい!という方は、次のマクロで変更する方法に進みましょう。

2)マクロでセルの移動方向を変更する方法


書き込むワークブックは「ThisWorkbook」です。以下のソースを張り付けてください。
'ブックがアクティブになったとき、セルを右に移動するよう設定
Private Sub Workbook_Activate()
  
    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlToRight

End Sub

'ブックが非アクティブになったとき、セルを下に移動するよう設定
Private Sub Workbook_Deactivate()
    
    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlDown

End Sub

ブックのイベントプロシージャを復習しましょう。
イベントの種類 イベントトリガー
Activate ブックがアクティブになったとき
Deactivate ブックがアクティブでなくなったとき

ここで使うプロパティは以下の2つです。
MoveAfterReturn
ユーザーが Enter キーを押したときに、アクティブ セルを移動するかどうかを決定します。既定値は True です。ユーザーが Enter キーを押したときにアクティブ セルを移動する方向を設定するには、MoveAfterReturnDirection プロパティを使用します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
使用例
次の使用例は、ユーザーが Enter キーを押した後も、アクティブ セルが選択されたままの状態にします。
Spreadsheet1.MoveAfterReturn = False
出典
https://msdn.microsoft.com/ja-jp/library/cc409510.aspx

MoveAfterReturnDirection
MoveAfterReturn プロパティが True に設定されている場合、ユーザーが Enter キーを押したときにフォーカスが移動する方向を設定します。値の取得および設定が可能です。使用できる定数は、XlDirection クラスの定数のいずれかです。
使用できる定数は、次に示す XlDirection クラスの定数のいずれかです。
xlDown、xlToLeft、xlToRight、xlUp
使用例
次の使用例は、ユーザーが Enter キーを押した後も、アクティブ セルが選択されたままの状態にします。
Spreadsheet1.MoveAfterReturn = False
出典
https://msdn.microsoft.com/ja-jp/library/cc409511.aspx



以上で完成です。

応用編

2)マクロ編では『ThisWorkbook』にマクロを記述しました。これによりブックの表示を切り替えるたびにセルの移動を初期値の「下」に戻しています。
他の活用方法として、シートのワークブックにコードを記述すれば、そのシートを表示している時だけセルの移動を切り替えることもできます。

2016/03/10

アクティブセルのある行・列を目立たせる

アクティブセルのある行・列を目立たせる

大きな表を作成していると、画面の真ん中にアクティブセルがきたとき、あれ?ここ何行目だっけ?何列目だっけ?とセルの番地がわかりにくくなることがあります。
そんなときセルの位置がパッとひとめで分かるように行と列に色がついているとわかりやすいですよね!

Excelの[条件付き書式]とVBAを使うと、図のようにアクティブセルから上辺の列番号までと、左辺の行番号までカラー表示ができます。


1)条件付き書式の設定

[ホーム]-[条件付き書式]-[新しいルール]をクリックします。
対象となる目立たせたいセルを範囲指定してください。

下記の数式2つを条件付き書式に設定して、塗りつぶしの色を設定する。


十字にしたい場合の設定

=AND(CELL("row")>=ROW(), CELL("col")=COLUMN())



囲み型にしたい場合の設定

縦軸の数式
=AND(CELL("row")>=ROW(), CELL("col")=COLUMN())

横軸の数式
=AND(CELL("row")=ROW(), CELL("col")>=COLUMN())




2)リアルタイムに色の描画を行うため、VBAを追加する。


アクティブセルが移動したら必ず再描画するようにVBAで設定します。
再描画とは、例えばセルに値を入力してEnterキーを押すと計算式が更新されるように、Excelが画面の描画を更新することをいいます。しかし、矢印キーを押してもその都度、計算式を更新するようなことはしていません。
今回の機能では、矢印キーやマウスクリックでアクティブセルを移動したときにも再描画をする必要があるため、VBAで以下のように設定します。


書き込むワークブックは「ThisWorkbook」です。以下のソースを張り付けてください。

' アクティブセルの行と列をハイライト表示する。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     
     Application.ScreenUpdating = True

End Sub

以上で完成です。