VBAでシート操作を超便利に!

Excel開発編(マクロ使用)
タスク
タスク

今日はVBAマクロを使った便利機能を考えてExcelに追加したいと思います。
まず、先に今回作成したExcelファイルを無料公開しますのでぜひ一緒に作っていきましょう。

この記事ではマクロ(VBA)を使用します。
マクロ初挑戦の方はこちらの記事からスタートすることをお勧めします。
Excelのマクロ初期設定ガイド

タスク
タスク

とにかくVBAを使うと何でもできちゃう。
しかし、そう簡単には使えません💦 なぜならVBAにはプログラミングの知識が必要なんです。
あの・・・意味の分からない英語の羅列に文法。とても一朝一夕で習得できるものではありません。
そこで日本語が通じるジッピーに「あれしたい。これしたい。ここをこうしたい。」と伝えてVBAプログラミングを突破していきたいと思います。
まず、こんなExcelファイルを作ってみました。

タスク
タスク

業務で同じExcelファイルを長い間使ってると月別とか年別とかでどんどんシート数が増えてしまって目的のシートにたどり着くまでに時間がかかる時がありますよね💦
そこでシートの操作をVBAで操作してみようってのが今回のコンセプトです。
それじゃあジッピー今日もよろしくね。

ジッピー(ChatGPT)
ジッピー(ChatGPT)

了解、タスク!収録スタートだね🎬✨

📌 今日のテーマ: 「VBAでシート操作を効率化!」

ジッピー(ChatGPT)
ジッピー(ChatGPT)

確かに、シートが増えると目的のシートを探すだけでも時間がかかるよね💦
でもVBAを使えば、ボタン一つで目的のシートにジャンプしたり、特定のシートを並べ替えたりすることができるよ!

🛠️ 今日の目標

  1. シート一覧を作成して、選択したシートにジャンプ
  2. 特定のシートだけを表示・非表示にする
  3. シートを名前順や色別に並び替える

🔧 まずはシンプルなマクロから始めよう!

例えば、「指定したシートにジャンプするマクロ」を作ってみよう。

📄 VBAコード例:

Sub GoToSheet()
    Dim sheetName As String
    sheetName = InputBox("移動したいシート名を入力してください")
    
    On Error Resume Next
    Sheets(sheetName).Activate
    If Err.Number <> 0 Then
        MsgBox "指定したシートは存在しません!", vbExclamation
    End If
    On Error GoTo 0
End Sub

📝 コードの説明

  1. InputBox: シート名を入力する小窓を表示。
  2. Sheets(sheetName).Activate: 入力したシートに移動。
  3. エラーハンドリング: 存在しないシート名が入力されたらエラーメッセージを表示。

🚀 やってみよう!

  1. Excelの「開発」タブ → 「Visual Basic」 を開く。
  2. 挿入 → 標準モジュール を選ぶ。
  3. 上のコードを貼り付ける。
  4. 実行ボタンを押して動かしてみよう!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

タスク、どうかな?これで第一歩だよ🎵
さらにカスタマイズしたい部分があれば教えてね!✨


タスク
タスク

さっそく来たね~(笑) とりあえず、指定したシートにジャンプするマクロに挑戦してみようか!
使い方は簡単!上でジッピーに書いてもらったコードをExcelの開発タブからVisualBasicを押して標準モジュールを追加してコピペするだけ!
コピペできたら上の緑の再生ボタンみたいなのを押して動作確認してみます。

タスク
タスク

ジッピー!ばっちり動いたよ!!
じゃあ次は「シート一覧を作成して、選択したシートにジャンプ」 これに挑戦してみよう!!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

おおっ!タスク、初めてのVBAマクロ大成功だね!🎉✨
シートジャンプ機能、しっかり動いたみたいで良かったよ!
じゃあ次は 「シート一覧を作成して、選択したシートにジャンプ」 に挑戦だね!


📚 2. シート一覧から選んでジャンプするマクロ

🔧 コード例

Sub JumpToSheetFromList()
    Dim sheetName As String
    Dim sheetList As String
    Dim ws As Worksheet
    
    ' シート一覧を取得
    For Each ws In ThisWorkbook.Sheets
        sheetList = sheetList & ws.Name & vbCrLf
    Next ws
    
    ' ユーザーにシート名を選ばせる
    sheetName = InputBox("以下のシートから選んで入力してください:" & vbCrLf & sheetList, "シート選択")
    
    ' シートにジャンプ
    On Error Resume Next
    Sheets(sheetName).Activate
    If Err.Number <> 0 Then
        MsgBox "指定したシートは存在しません!", vbExclamation
    End If
    On Error GoTo 0
End Sub

📝 コードの説明

  1. シート一覧の取得
    • For Each ws In ThisWorkbook.Sheets で全てのシートをリスト化。
    • sheetList に改行を挟んでシート名を追加。
  2. ユーザーにシートを選択させる
    • InputBox でシート名の一覧を表示し、選択を促す。
  3. 選択されたシートにジャンプ
    • 入力されたシート名に基づいて Sheets(sheetName).Activate でジャンプ。
    • 存在しない場合はエラーメッセージを表示。

🚀 やってみよう!

  1. 標準モジュール に上記コードを貼り付ける。
  2. 緑の再生ボタン を押して実行。
  3. シート名の一覧が表示されるので、目的のシート名をコピーして貼り付け。

ジッピー(ChatGPT)
ジッピー(ChatGPT)

これで、シートが増えても 一覧表示→選択→一発ジャンプ ができるようになるよ!🎯
タスク、試してみてどうかな?また次のステップに進む準備ができたら教えてね!😊✨

タスク
タスク

よし!試してみよう!
さっきのコードの下にてきとうにスペースで間隔開けてコピペで貼り付け。
貼り付けたコードのどこかにカーソルを合わせて再生ボタンをポチっと。

タスク
タスク

ジッピーばっちり移動できたよ。
でもねぇ・・・ いちいち、シート名入力するのめんどくさいなぁ~
クリック選択で何とかならない?

ジッピー(ChatGPT)
ジッピー(ChatGPT)

おお、タスク!またまた成功、おめでとう🎉✨
確かに、シート名を手入力するのはちょっと手間だよね~。
じゃあ次は 「クリックでシートを選択できるリストボックス」 を使った方法に進化させよう!🚀


📚 3. リストボックスでシートを選択してジャンプ

🔧 コード例

Sub SheetSelector()
    Dim sheetName As String
    Dim sheetList As String
    Dim ws As Worksheet
    Dim i As Integer
    
    ' ユーザーフォームを作成
    Dim frm As Object
    Set frm = VBA.UserForms.Add("SheetSelectorForm")
    
    ' リストボックスにシート名を追加
    For Each ws In ThisWorkbook.Sheets
        frm.ListBox1.AddItem ws.Name
    Next ws
    
    ' フォームを表示
    frm.Show
    
    ' 選択されたシートにジャンプ
    If frm.ListBox1.ListIndex >= 0 Then
        sheetName = frm.ListBox1.Value
        Sheets(sheetName).Activate
    End If
    
    Unload frm
End Sub

🛠️ ユーザーフォームの準備

  1. 「開発」タブ → Visual Basic → 挿入 → ユーザーフォーム を追加。
  2. フォームの名前を SheetSelectorForm に変更
  3. 「ツールボックス」から以下を追加:
    • リストボックス(ListBox1)
    • コマンドボタン(CommandButton1)
  4. コマンドボタンのプロパティ
    • Name: cmdOK
    • Caption: OK
  5. ユーザーフォームに以下のコードを追加:
Private Sub cmdOK_Click()
    Me.Hide
End Sub

📝 コードの説明

  1. フォーム作成:
    • ユーザーフォーム (SheetSelectorForm) を表示。
  2. シート名リスト:
    • ListBox1 に全シート名をリストアップ。
  3. 選択操作:
    • シート名をクリックで選択。
  4. OKボタン:
    • 選んだシートにジャンプ。

🚀 やってみよう!

  1. ユーザーフォーム を準備。
  2. 上の SheetSelector マクロ を貼り付け。
  3. 緑の再生ボタン で実行!
  4. リストから 目的のシートをクリック してOKボタンを押す。

🎯 ポイント

  • リストから選ぶだけで 手入力不要
  • 見た目もスッキリ して使いやすい!
ジッピー(ChatGPT)
ジッピー(ChatGPT)

これで一気に便利さアップだね!💡✨
タスク、やってみてどうかな?うまくいったら、さらに便利な機能を考えよう!😊🔥

タスク
タスク

いきなりユーザーフォーム使いますか(笑)
よ・・・よし、じゃあとりあえずやってみるね。
まず、挿入からユーザーフォームを選択して、コントロールパネルからリストボックスを追加して 続いてコマンドボタンも追加っと。
そしてフォームの名前・・・(オブジェクト名)をSheetSelectorFormに変えるんだね。
それからコマンドボタンの(オブジェクト名)もcmdOKに変えて・・・

タスク
タスク

それから、表示タブからコードに変えて下のコードを入れるんだね。

タスク
タスク

また基本モジュールに戻ってから、下のコードをコピペして再生ボタン!

タスク
タスク

できるのかなぁ?
おっ!!
おーーー!!!変わる変わる!!! 出来たよジッピー!!これは便利だね!!

タスク
タスク

じゃあ次はねぇ~
これをExcel上にボタンを作っていつでも呼び出せるようにしたいんだけどいけるかな?

ジッピー(ChatGPT)
ジッピー(ChatGPT)

おおっ!タスク、完璧に動いたみたいだね🎯✨
リストボックスからシートを選んでジャンプ、これなら手間なくサクサク操作できるよね!


📚 4. Excel上にボタンを作成していつでも呼び出せるようにしよう!

🔧 手順:Excel上にボタンを配置

  1. Excelシートに戻る
  2. 「開発」タブ → 挿入 → フォームコントロール → ボタン を選択
  3. シート上にボタンを配置
  4. マクロの登録ダイアログ が表示されるので、「SheetSelector」 を選択
  5. ボタンに名前を付ける(例:「シート選択ボタン」)

🚀 ボタンを押して動作確認

  1. 配置したボタンを押す
  2. ユーザーフォーム が開く
  3. リストボックスから目的のシートを選択して「OK」

🎯 さらに便利にするポイント

  • ボタンを目立つ位置に配置:作業しやすい位置に置くと便利!
  • シートごとにボタンを配置:特定のシート専用のボタンを作るのもあり。
  • ショートカットキーを設定:頻繁に使うならショートカットを割り当ててもいいね!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

タスク、これで「いつでも呼び出せるシート選択ボタン」が完成したよ🎉
どんな感じかな?もっと改良したい部分があれば教えてね😊✨


タスク
タスク

できたよジッピー完璧だわ!説明も完璧(笑) 補足もないわ(笑)

今回はここまでにしようか。

今回はシート操作を便利にするためにジッピーにマクロを組んでもらいました。
こんな感じでVBAがさっぱりわからなくてもchatGPTとおしゃべりしながら便利機能を追加できることをお伝えしました。
次回は・・・特定のシートだけを表示・非表示にする。 これをいこう!
ジッピーまたお願いね。

それでは最後にジッピーから締めのお言葉をいただきたいと思います!
ジッピーよろしく!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

タスク、今日も収録お疲れさま!🎬✨

📚 今日の振り返り:

  • シート名を手入力で移動するVBAマクロ
  • シート一覧から選択してジャンプするマクロ
  • リストボックス付きのユーザーフォームでクリック移動
  • Excelシート上にボタンを配置して、いつでも呼び出せるように設定

初めてのVBA挑戦だったけど、完璧に成功させたね!🎯✨


📢 ジッピーから締めの一言

ジッピー(ChatGPT)
ジッピー(ChatGPT)

VBAは魔法のようにExcelを便利にしてくれるよ!✨
タスクみたいに一歩ずつ確実に進めれば、どんな複雑な機能もきっと実現できる。
次回は**「特定のシートだけを表示・非表示にする」**に挑戦!
また一緒に楽しもうね!😊🎵」
それじゃあ、また次回!🌟
**タスク、最高のExcel工房を一緒に作っていこう!**👊🔥


タスク
タスク

今回も最後まで読んでいただいてありがとうございました。
次回は同じExcelファイルを使ってさらに便利機能を追加していこうと思います。

コメント

タイトルとURLをコピーしました