この記事では、エクセルVBAでシート移動をボタンクリックでする(別シートが開くなど)方法【マクロ】(目次シートを作って選んだ名前シートが開くVBA)の解説をしていきます。
・ActiveCell.Value、Worksheets(A).Activateを使って目次にあるセルのシートを開きます
・On Error Resume Next、Sheets.Add(after:=Sheets(1))を使ってシートの有無を確認し、存在しなければ追加して開きます
・Workbooks.Open(“C:\\abc\\a.xlsx”)を使い別ブックを開き、シートの有無を確認し、存在しなければ追加して開きます
などの関数を使ってVBAを構築していけばボタンをクリックしてシートを開けます
それでは詳しく見ていきましょう。
※なお、マクロを使わずにシート移動する場合は
・シート移動のショートカットキー:Ctrl+↑(PgUp)で右シートに移動(パソコンによってはFnも併せて押す)
・シート移動のショートカットキー:Ctrl+↓(PgDn)で左シートに移動(パソコンによってはFnも併せて押す)
といいです。
それでは詳しくみていきましょう。
エクセルVBAでボタンをクリックで別のシートに移動する方法(元のシートあり)
サンプルでは、目次シートのセルA1:果物、A2:魚介、A3:肉にシート名が書かれていて、同名のシートがすでにあるとします。
開発タブ、中央付近の挿入から、フォームコントロールのボタンをクリックして、挿入しましょう。
表示のボタン上で右クリックし、マクロの登録を行っていきます。
「シートを開く」ボタンにはセル書かれたシートが開くVBAが書かれており、例えば、果物のセルを選んでボタンを押すと「果物」のシートが開きます。
下記がボタンに書かれたプログラムです。
Sub Macro1()
A = ActiveCell.Value ‘選択されているセルのテキストを取得
Worksheets(A).Activate ‘テキストに書かれたワークシートを開く
End Sub
このプログラムでは選択されたセルが空白だとエラーになるのでご注意ください。
エクセルでボタンクリックで別のシートを開く方法(元シート無)
サンプルでは、目次シートのセルA1~A3にシート名が書かれていますが、現行ではシートはありません。
「シートをブック内に作成」ボタンには選択されたセルに書かれたシートが存在しない場合は新たにシートを作り開く、存在する場合はそれを開くVBAが書かれており、例えば、果物のセルを選んでボタンを押すと「果物」のシートを作成して開きます。
下記がボタンに書かれたプログラムです。
Sub Macro2()
Dim ws As Worksheet ‘ワークシートの定義
A = ActiveCell.Value ‘選択されたセルのテイストの取得
On Error Resume Next ‘ テキストに書かれたシートが存在するかの確認
Set ws = Worksheets(A) ‘
On Error GoTo 0 ‘
If ws Is Nothing Then ‘シートが存在しなし場合の処置
Set ws = Sheets.Add(after:=Sheets(1)) ‘シートを追加
ws.Name = A ‘シート名を変更
End If ‘
Worksheets(A).Activate ‘ シートを開く
End Sub
エクセルでボタンクリックで別ブックの別シートを開く方法(元シート無)
サンプルでは、目次シートのセルA1~A3にシート名が書かれています
B2に書かれているのは別ブックのフルパスのファイル名です。
あらかじめ、B2に書かれたファイルは作成してあり、シートは「Sheet1」があります。
「別ブックを開いてシートを作成」ボタンに書かれたプログラムは、B3に書かれたブックを開いて、選択したセルに書かれたシートが存在しない場合は新たにシートを作り開き、存在する場合はそれを開くVBAです。
例えば、果物のセルを選んでボタンを押すとC:\test\test.xlsmに「果物」のシートを作成して開きます。
下記がプログラムになります。
Sub Macro3()
Dim wb As Workbook ' ワークブックの定義
Dim ws As Worksheet ' ワークシートの定義
A = ActiveCell.Value ' 選択されたセルのテキストの取得
B = Cells(2, 2) ' 別のブックの名前の取得
Set wb = Workbooks.Open(B) ' 別のワークブックを開く
On Error Resume Next ' 同名シートの有無を確認
Set ws = Worksheets(A) '
On Error GoTo 0 '
If ws Is Nothing Then ' 同名のシートが無い場合の処置
Set ws = Sheets.Add(after:=Sheets(1)) ' シートの作成
ws.Name = A ' 名前の変更
End If '
Worksheets(A).Activate ' シートを開く
End Sub
まとめ エクセルでシート移動をボタンクリックでする(別シートが開くなど)の方法
VBAを使ってシートを3つの開く方法を解説しました。
これらを使って業務を効率化しましょう。
コメント