概要
動作確認環境
OS : Win7
Excel : 2010
アクティブセルに入力されたシート名が同一ブック内に存在するか確認し、存在する場合にそのシートへ移動します。移動したいシート名が入力されているセルを選択してから、マクロを実行して下さい。
尚、シートの移動に使用するセルは下記条件を満たしていることが必要です。
- 結合されていないこと
- 単一のセル(A1、B1など1つのみ)であること
- 単一のシート名(Sheet1、Sheet2など1つのみ)が入力されていること
サンプルコード
下記サンプルコードをシートモジュールに貼り付けて下さい。
Sub プロシージャ sample3
Option Explicit 'シートモジュールに貼付 'セルに記入されたシートに移動 Private Sub sample3()Dim rng As Range
Dim r_count As Long
Dim c_count As Long
Dim i As Long
Dim tf As Boolean
Dim str As String
tf = False
'セルが選択されているか
If TypeName(Selection) <> "Range" Then
'・・・(1)MsgBox "セルを選択してから実行して下さい"
Exit Sub
End If
Set rng = ActiveCell
r_count = Selection.Rows.Count
'・・・(2)c_count = Selection.Columns.Count
'・・・(3) '単一のセルが選択されているかIf ((r_count = 1) And (c_count = 1)) Then
str = rng.Value
'選択したシート名が存在するかFor i = 1 To Sheets.Count
If Sheets(i).Name = str Then
tf = True
Exit For
End If
Next i
If tf = True Then
Worksheets(str).Activate
'・・・(4) MsgBox "移動完了"Else
MsgBox "移動失敗"
End If
Else
MsgBox "単一のセルを選択して下さい"
Exit Sub
End If
End Sub
サンプルコード解説
Sub プロシージャ sample3
(1) If TypeName(Selection) <> “Range” Then
TypeName(Selection) で現在選択されているものの型を取得します。セルが選択されている場合は文字列 Range が戻り値として返されます。
(2) r_count = Selection.Rows.Count
Selection.Rows.Count で現在選択されているセル範囲の行数を取得します。
(3) c_count = Selection.Columns.Count
Selection.Columns.Count で現在選択されているセル範囲の列数を取得します。
(4) Worksheets(str).Activate
Worksheets(str).Activate でシート名(str)のワークシートが選択されている状態にします。
操作手順
今回は、3枚のシート(Sheet1、Sheet2、Sheet3)が保存されている sample3.xlsx を例に説明します。
- シート名を検索するファイルの拡張子を変更する。
- 作業用シートを追加する。
- サンプルコードを貼り付ける。
- サンプルコード sample3 を実行する。
手順1.拡張子の変更
※既にファイルの拡張子が .xlsm になっている場合は、手順2へ進んで下さい。
(1) 左図の様に sample3.xlsx と表示されていない場合は(2)へ、表示されている場合は(7)へ進んで下さい。
(2) 任意のフォルダを選択して、ダブルクリックして開いて下さい。
※どのフォルダでもOKです。
(3) 整理→フォルダーと検索のオプションの順にクリックして下さい。
(4) 表示タブに切り替え、登録されている拡張子は表示しないの左側にあるチェックボックスのチェックを外して下さい。
(5) 適用→OKの順にクリックして下さい。
(6) 左図の様に sample3.xlsx と表示されていることを確認して下さい。
(7) sample3.xlsx を開き、ファイル→名前を付けて保存の順にクリックして下さい。
(8) 赤線で囲んだ部分をクリックして下さい。
(9) 一覧からExcel マクロ有効ブック(*.xlsm)をクリックして下さい。
※ファイルの種類が .xlsm に変更されます。
(10) 保存をクリックして下さい。
※特に保存場所を指定しない場合は、オリジナルのファイルと同じ場所に保存されます。
※(10)で保存をクリックした時に左図の様な警告が出た場合は、いいえ をクリックしてファイルを探してみましょう。
手順2.作業用シートの追加
(1) 手順1で拡張子を変更したファイル sample3.xlsm を開き、左図の赤線で囲んだ部分をクリックして下さい。
※Excel画面下側のワークシート名が表示されている場所の近くにあります。
※(1)の図のアイコンが見つからない方は、左図の赤線で囲まれた部分をクリックして下さい。
(2) 左図の赤線で囲まれた部分にマウスのカーソルを合わせ、右クリックして下さい。
(3) 左図の赤線で囲まれた部分をクリックして下さい。
(4) シート名を 作業用シートに変更して下さい。
※(4)でシート名を変更した後に左図の様な警告が出た場合は、重複しない名前に変更して下さい。
(5) 作業用シートのセルA2 に Sheet3 と入力し、A2 をアクティブセルにします。
※ Sheet3 へ移動する場合の説明です。入力するセルは A2 でなくても大丈夫です。
手順3.サンプルコードの貼り付け
(1) 手順2で追加した 作業用シート を選択し、シート名にマウスのカーソルを合わせ、右クリックして下さい。
(2) 左図の赤線で囲まれた部分をクリックして下さい。
(3) 左図の赤線で囲まれた部分にサンプルコード Sub プロシージャ sample3 ( Option Explicit ~ End Sub まで )をコピーして貼り付けて下さい。
※サンプルコード1行目の Option Explicit が左図の様に既に表示されている場合は、2行目からコピーして貼り付けて下さい。
手順4.サンプルコードの実行
(1) デバッグ → VBAProjectのコンパイル の順にクリックして下さい。
※特に問題が無ければ、メッセージは表示されません。
※(1) でコンパイル実行後に左図の様な警告が出た場合は、貼り付けた内容を再度確認して下さい。
(2) 実行 → Sub/ユーザーフォームの実行 の順にクリックして下さい。
※(2)の実行後に左図の様なメッセージが表示された場合は、画像等が選択されています。
※(2)の実行後に左図の様なメッセージが表示された場合は、複数のセル(結合セルを含む)が選択されています。
※(2)の実行後に左図の様なメッセージが表示された場合は、シート名の入力に問題があります。セルに入力したシート名を再度確認して下さい。複数のシート名を入力している場合は単一のシート名に修正して下さい。
(3) OK をクリックして下さい。
※シートに移動することが出来た場合に表示されるメッセージです。
(4) Sheet3 へ移動します。
操作手順 (2回目以降)
上記の操作手順を例に説明します。
- ファイル sample3.xlsm を開く。
- Sub プロシージャ sample3 を表示する。
- Sub プロシージャ sample3 を実行する。
手順1.ファイルを開く
(1) 作業用シートのセルA2 に Sheet3 と入力し、A2 をアクティブセルにします。
※ Sheet3 へ移動する場合の説明です。入力するセルは A2 でなくても大丈夫です。
※ sample3.xlsm を開いた時に、左図の様な警告が出た場合は、コンテンツの有効化をクリックして下さい。
手順2.Sub プロシージャ sample3 の表示
(1) 作業用シートにマウスのカーソルを合わせ、右クリックして下さい。
(2) 左図の赤線で囲まれた部分をクリックして下さい。
手順3.Sub プロシージャ sample3 の実行
(1) 左図の赤線で囲まれた部分をクリックして下さい。
※ ( Declarations ) の右側の ▼ をクリックして下さい。
(2) リストから sample3 をクリックして下さい。
(3) 実行 → Sub/ユーザーフォームの実行 の順にクリックして下さい。
※(3)の実行後に左図の様なメッセージが表示された場合は、画像等が選択されています。
※(3)の実行後に左図の様なメッセージが表示された場合は、複数のセル(結合セルを含む)が選択されています。
※(3)の実行後に左図の様なメッセージが表示された場合は、シート名の入力に問題があります。セルに入力したシート名を再度確認して下さい。複数のシート名を入力している場合は単一のシート名に修正して下さい。
(4) OK をクリックして下さい。
※シートに移動することが出来た場合に表示されるメッセージです。
(5) Sheet3 へ移動します。