ExcelVBAを使ってみる

MacにてExcelのVBAを利用する方法とFizzBuzzコードの実装を行い、ボタンからコードを実行する方法についてをまとめております
2023.02.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、データアナリティクス事業本部@那覇オフィスの下地です。

Excelは関数も充実しておりますが、関数以外に拡張用のプログラミング言語としてVBAがあります。 Office VBA リファレンスより概要を引用いたします。

Office Visual Basic for Applications (VBA) は、Office アプリケーションの拡張に使用できるイベント駆動型のプログラミング言語です。

Mac用のExcelでVBAを使用しましたので、VBAの使用方法についてまとめたいと思います。

1. VBAを設定する

まずはVBAを使用するためにタブに開発項目を表示するように設定します。 以下の手順で行います。

  1. Mac全体画面の左上にある「Excel」をクリックし「環境設定」を選択します
  2. 「リボンとツールバー」を選択します
  3. 「メインタブ」の開発にチェックを入れて保存します

開発タブが表示されたあとは、「VisualBasic」をクリックすると以下図のようにポップアップが表示されますのでこちらにて開発を行います。

なお、「イミディエイト」がない場合は上部タブの「表示」から設定することが可能です。

2. VBAを使ってみる

では開発画面が表示されましたので以下の3つを実装していきます。

  1. Excelセルの値を表示する
  2. FizzBuzzコード書く
  3. ボタンを作ってコードを実行する

2.1 Excelセルの値を表示する

先ほど表示したエクセルシートの「A列1行」セルに入力されている「めんそーれ」という単語をVBAにて表示します。 セルの値を取得するためにCellsを使用します。他にもRangeを使用することでも取得可能です。

Cellsで「A列1行」の値を取得する場合は以下のように指定します。

' Cells(行番号, 列番号)
Cells(1, 1)

取得したセルの値を、ポップアップ画面として表示するMsgBoxとイミディエイトタブに表示するDebug.Printを使用します。コードは以下となります。

Sub sample()
    Debug.Print (Cells(1, 1))
    MsgBox (Cells(1, 1))
End Sub

上記コードを入力し、▶️をクリックします。そうしますと、図のように結果が表示されます。

2.2 FizzBuzzコード書く

続いてFizzBuzzコードを書いてみます。 詳しくはこちら(FizzBuzz問題【フィズバズ問題】)を参考にしていただけらたと思いますが、入力値を以下のように変換して出力するコードとなります。

  • 3の倍数: 「Fizz」と出力
  • 5の倍数: 「Buzz」と出力
  • 3と5の倍数: 「FizzBuzz」と出力
  • それ以外: 数値をそのまま出力

FizzBuzzとして作成したコードを記載します。

Sub sample()
    Dim i As Integer

    For i = 1 To 20
        If i Mod 3 = 0 And i Mod 5 = 0 Then
            Debug.Print ("FizzBuzz")
        ElseIf i Mod 3 = 0 Then
            Debug.Print ("Fizz")
        ElseIf i Mod 5 = 0 Then
            Debug.Print ("Buzz")
        Else
            Debug.Print (i)
        End If
    Next i
End Sub

上記コードを先ほどのように入力し実行するとイミディエイト画面に想定した結果が出力されます。

2.3 ボタンを作ってコードを実行する

では続いて、作成したコードをExcel上から実行できるように「ボタン」の設定を行います。

また、処理する回数をB1セルから取得し、出力結果をA3~B22セルに表示するようにコードを修正します。修正したコードを記載します。

Sub sample()
    Dim i As Integer

    For i = 1 To Cells(1, 2).Value
        Cells(i + 2, 1).Value = i
        If i Mod 3 = 0 And i Mod 5 = 0 Then
            Cells(i + 2, 2).Value = "FizzBuzz"
        ElseIf i Mod 3 = 0 Then
            Cells(i + 2, 2).Value = "Fizz"
        ElseIf i Mod 5 = 0 Then
            Cells(i + 2, 2).Value = "Buzz"
        Else
            Cells(i + 2, 2).Value = i
        End If
    Next i
End Sub

コードを作成したのでボタンの設定を行います。「開発」タブを選択していると「ボタン」項目がありますのでクリックします。

そうしますと以下図のように「マクロの登録」をするポップアップが表示されますので先ほど作成したsampleコードを選択してOKをクリックします。

ボタンの名前を「FizzBuzzボタン」に変更しボタンをクリックします。 そうしますと、以下図のようにA列の3行目以降に実行した回数が表示されB列にはFizzBuzz判定をした結果が表示されることが確認できました!

B1セルに「20」と入力しておりますので20回処理されておりますがこちらの数値を変更することで実行回数を変更することが可能です。

3. まとめ

MacでExcelVBAを使用する方法からFizzBuzzコード作成/結果をシートへ入力するところまでまとめてみました。 前職ではWindows環境にてExcelVBAを利用した業務改善をしていたこともあったので少し懐かしい気分になれました。この記事がどなたかの助けになれば幸いです。

参考リンク