VBA・マクロツール

【知らなくても使える】全シートの表示倍率とカーソル位置を一括で変更するアドイン(Excel VBA)

Excelファイルは最後に保存した際に開いていたシートや置いていたカーソル位置、表示倍率などが記憶されます。そのためファイルを開いた際は前回の作業終了時の中途半端な状態(シートとカーソル位置、表示倍率)で開かれてしまいます。

 

作業が途中なら全く問題ないのですが、例えば完成した成果物として客先に納めるときなどは中途半端な状態のままにしておくことはよろしくありません。

そんな場面で、保存する前に指定したカーソル位置と表示倍率に一括で変更できる『カーソル位置と表示倍率を変更できるアドイン』をExce VBAで作成しました。

 

当記事にはマクロの元になるExcelファイルがダウンロード可能で、VBAのコードも記事内に記載がありますので、Excel VBAやマクロが良く分からないという方でもすぐに使用できます

 

当ツールを使用すれば定例業務の業務効率化が図れるかと思いますので、是非ご活用頂けたらと思います。

 

『全シートのカーソル位置と表示倍率に一括変更するアドイン』の概要

任意のExcelファイルを開いて、上部のリボンにある「保存前処理」タブから、カーソル位置と表示倍率を指定して、「実行」すれば全シートを対象にして、指定したカーソルと倍率に変更することができます。

 

基本的な機能、操作方法の説明

  1. 複数セルの値を一つのセルに貼り付けたい任意のExcelファイルを開きます。
  2. 「開発」タブの「Excelアドイン」より、作成したアドインファイルを指定(参照)します。

※選択するExcelアドインは、当ぺージ内のツールをダウンロードしてVBAコードを貼り付けたアドインファイルを選択してください。

 

アドインを設定出来たら、上部のタブに「保存前処理」が追加されます。

 

<ツール実行前の状態>

実行前の状態として、「Sheet2」は[G5]、「Sheet3」は[C6]にカーソルがある状態になっています。

 

<使い方>

  1. 上部のタブ内にある「保存前処理」を選択します。
  2. 「セル位置」を指定します。(カーソルをおくセル位置のアドレス)
  3. 「倍率」を指定します。(右下に表示されている表示倍率)
  4. 「実行」をクリックします。

なお、初期表示シートの「Sheet1」は[O17]にカーソルがある状態になっています。

 

<ツール実行後>

実行させると、全シートに対して指定したセル位置(例:A1)にカーソルが移動し、指定した倍率(100%)で表示されました。

当アドインの実行は全シートが対象になります。

 

使用する際の事前準備

このページの下部にある「Excelファイルのツール」からExcelファイルを取得し、「準備の手順」内にあるVBAコードを取得したExcelファイルに記載して保存すれば、すぐに当ツールを使用できます。

 

以下にその手順を説明していきます。

 

準備の手順

当ツールのダウンロードはこちら」からサンプル(Excelファイル)をダウンロードします。

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、設定画面(設定シート)が入っているマクロ無しExcelファイルを公開しています

 

<手順1>

ダウンロードしたExcelファイルを開いて、VBE(Visual Basic Editor)を起動させます。

  1. Excelファイルの上部にあるリボンの「開発」タブを選択します。
  2. 「Visual Basic」をクリックして、VBE(Visual Basic Editor)を起動させます。

リボンに「開発」タブが表示されていない場合は、「Excel VBAを始める前に、最初にやっておくべき初期設定内容の『開発』タブを表示させる」を参照ください。

 

<手順2>

  1. 「Microsoft Excel Object」を右クリックします。
  2. 「挿入」を選択します。
  3. 「標準モジュール」をクリックします。

 

<手順3>

  1. 「Module1」をダブルクリックします。
  2. 表示されている右側の欄(エディター)に以下のVBAコードを記載します。

 

VBAのソースコードはこちら

以下のVBAコードをコピーして、「Module1」内のエディターに貼り付けます。

※VBAコードの右上のアイコンをクリックするとソースコードをコピーできます

Option Explicit

'-----(設定値)------------------------
Private Const PLACE_FIRST = "A1"            '1.セル位置(カーソルをあてるアドレス)
Private Const ZOOM_INDEX_FIRST = "3"        '2.表示倍率の最初のインデックス
Private Const ZOOM_VALUE_FIRST = "100"      '3.表示倍率の最初の値
'---------------------------------------

Private RbRibbon As IRibbonUI               'リボン
Private PlacePoint As String                '貼り付け位置
Private ZoomValue As String                 '表示倍率
Private BeforePlace As String               '一つ前に指定した貼り付け位置

'===================================
'リボンの初期処理
'===================================
Sub onLoad_prestorage(ribbon As IRibbonUI)

    'リボンの表示を更新できるようにするためにリボンをセットする
    Set RbRibbon = ribbon
    RbRibbon.Invalidate
    
End Sub
 
'=====================================
'「セル位置」の最初の値を取得する
'=====================================
Sub TgtCellPoint_getText(control As IRibbonControl, ByRef returnValue)
    If PlacePoint = "" Then
        PlacePoint = PLACE_FIRST
        BeforePlace = PlacePoint
    End If
    returnValue = PlacePoint
End Sub

'=====================================
'「倍率」の最初の値を取得する
'=====================================
Sub drdn_tgtZoom_getIndex(control As IRibbonControl, ByRef index) ' DropDownの項目の選択を設定
    index = ZOOM_INDEX_FIRST
    ZoomValue = ZOOM_VALUE_FIRST
End Sub

'-------------------------
'「セル位置」に変更があった際の処理
'-------------------------
Sub TgtCellPoint_onChange(control As IRibbonControl, text As String)

On Error GoTo ErrHnd
    If Evaluate("ISREF(" & text & ")") Then
        PlacePoint = text
        BeforePlace = PlacePoint
    Else
        PlacePoint = BeforePlace
        MsgBox "「セル位置」は有効なアドレスを入力して下さい。"
    End If
    
    RbRibbon.InvalidateControl ("edbox_tgtCellPoint") ' editBoxの表示を更新する
    Exit Sub
    
ErrHnd:
    PlacePoint = BeforePlace
    MsgBox "「セル位置」は有効なアドレスを入力して下さい。"
    RbRibbon.InvalidateControl ("edbox_tgtCellPoint") ' editBoxの表示を更新する
End Sub

'-------------------------
'「倍率」に変更があった際の処理
'-------------------------
Sub TgtZoom_onAction(control As IRibbonControl, itemID As String, index As Integer)
    
    Dim zoomNum As Long: zoomNum = Replace(itemID, "Drd_Item_", "")
    
    '指定された倍率が数値でない場合は、一つ前の値を入れる
    If IsNumeric(zoomNum) Then
        ZoomValue = Str(zoomNum) & "%"
    End If
    
End Sub

'=====================================
'実行処理
'=====================================
Sub moveCell_onClick(control As IRibbonControl)

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Dim wkSheet As Object
    
    For Each wkSheet In ActiveWorkbook.Worksheets
    
        If wkSheet.Visible = True Then
            wkSheet.Select
        
            'A1にカーソルを置く
            wkSheet.Range(PlacePoint).Select
    
            ActiveWindow.ScrollColumn = 1
            ActiveWindow.ScrollRow = 1
            
            Dim zoomNum As Long: zoomNum = Replace(ZoomValue, "%", "")
    
            '表示スケールを変更する
            If IsNumeric(zoomNum) Then
                ActiveWindow.Zoom = zoomNum
            End If
        End If
    Next
    
    '1番左のシートを選択
    Worksheets(1).Select
    
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    
End Sub

 

<手順4>

マクロを含んだExcelとして、ファイルを保存します。

  1. 左上にある「保存」アイコンを選択します。
  2. 「いいえ」をクリックします。(※マクロ入りファイルとして保存します。)
  3. ファイルを保存する際は「Excelアドイン(*.xlam)」を選択して、保存します。
  4. 「保存」をクリックします。

 

 

これで事前準備は完了です。

あとは「当ツールの使用方法」で記載された方法でツールを実行できます。

 

また、このようなExcelVBAを用いた業務効率化を行うときに、以下の書籍が実際のVBAコードを書く際に参考になると思いますので、良かったらご参照ください。

なお、当マクロの開発環境として、OSは “Windows10” 、Excelのバージョンは “Microsoft Office 365″ で行っており、当環境では動作確認ができていますが、他のすべての環境で正常に動作するかは確認できていません。

 

正常に動作しない場合は、コメントいただければ幸いです。
また、このような業務効率化できるツールを以下に一覧でまとめてありますので、ご興味のある方はご覧ください。

 

 

当ツールのダウンロードはこちら

下記よりExcelファイルをダウンロードして、記事の途中にありました VBAのソースコードをツール内に組み込んで使用してください。

【Excel VBA】全シートの表示倍率とカーソル位置を一括で変更するアドインツール

ツールのダウンロードはこちら

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、マクロ無しExcelファイルを公開しています

他に要望等ありましたら、可能な限り改修等を対応しますのでコメント頂ければと思います

 

<このツールが『結構使える!』と思ったら、下のグッドボタンを押していただけたら幸いです>

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です