Sequence Makerでいろいろな種類のメッセージボックスを表示する

## はじめに
Sequence MakerはExcelから測定器を制御可能にするアドインです。Sequence Makerには専用コマンドというものが用意されており、それを使うとVBAの処理を呼び出すことができます。この記事ではSequence MakerとVBAを使用していろいろな種類のメッセージボックスを表示する方法を解説します。Sequence Makerについての詳細は以下の記事を参照ください。

https://qiita.com/sequencemaker/items/8e6a370ab0a793a06a3b

また、Sequence MakerからVBAの処理を呼び出す方法は以下の記事を参照ください。

https://qiita.com/sequencemaker/items/2c13cd388cede0fe9234

:::note warn
***お断り***
本記事の内容はSequence Maker開発元の公式見解ではなく、あくまでも個人が趣味の範囲内で執筆しているものです。記事の内容について開発元へ問い合わせることはお控えください。ご質問・要望などは各記事のコメント欄へお願いいたします。
:::

## VBAの実装

```Vb
Option Explicit

Function MsgBoxCustom(msg As String, _
                      title As String, _
                      button As String, _
                      icon As String, _
                      def As Integer) As Integer

    Dim ret As Integer
    Dim msgBoxStyle As Integer
    
    'デフォルト値
    msgBoxStyle = vbOKOnly
    
    'ボタンの種類
    Select Case button
        Case "OK"
            msgBoxStyle = vbOKOnly
        Case "OKCancel"
            msgBoxStyle = vbOKCancel
        Case "AbortRetryIgnore"
            msgBoxStyle = vbAbortRetryIgnore
        Case "YesNoCancel"
            msgBoxStyle = vbYesNoCancel
        Case "YesNo"
            msgBoxStyle = vbYesNo
        Case "RetryCancel"
            msgBoxStyle = vbRetryCancel
        Case Else
            msgBoxStyle = vbOKOnly
    End Select
    
    'アイコンの種類
    Select Case icon
        Case "Critical"
            msgBoxStyle = msgBoxStyle Or vbCritical
        Case "Question"
            msgBoxStyle = msgBoxStyle Or vbQuestion
        Case "Exclamation"
            msgBoxStyle = msgBoxStyle Or vbExclamation
        Case "Information"
            msgBoxStyle = msgBoxStyle Or vbInformation
    End Select
    
    'デフォルトボタンの番号
    Select Case def
        Case 1
            msgBoxStyle = msgBoxStyle Or vbDefaultButton1
        Case 2
            msgBoxStyle = msgBoxStyle Or vbDefaultButton2
        Case 3
            msgBoxStyle = msgBoxStyle Or vbDefaultButton3
        Case 4
            msgBoxStyle = msgBoxStyle Or vbDefaultButton4
    End Select

    'メッセージボックスを表示
    ret = MsgBox(msg, msgBoxStyle, title)

    '結果をリターン
    MsgBoxCustom = ret
    
End Function
```

## メッセージボックスを表示してみる

### 「OK」ボタンのみ。
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです1", "タイトル1", "OK", "Critical", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/24f861a3-161b-e6e9-62ef-529ddd44f505.png)

### 「OK」と「キャンセル」ボタン。	
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです2", "タイトル2", "OKCancel", "Question", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/5fbe6e4d-8c4a-5065-5ebc-b4b65c88f6fc.png)

### 「中止」、「再試行」、「無視」ボタン。
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです3", "タイトル3", "AbortRetryIgnore", "Exclamation", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/d5d086ce-0306-9d2e-8673-4097f6878274.png)

### 「はい」、「いいえ」、「キャンセル」ボタン。
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです4", "タイトル4", "YesNoCancel", "Information", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/912e59e6-9de4-5b54-d39e-9dcafe26e21e.png)

### 「はい」と「いいえ」ボタン。
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです5", "タイトル5", "YesNo", "Question", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/389dcbaa-92e6-958e-ea2a-996c976b5e3a.png)

### 「再試行」と「キャンセル」ボタン。 
```
#MACRO?(MsgBoxCustom, "これはメッセージボックスのテストです6", "タイトル6", "RetryCancel", "Question", 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/02740609-3283-d3a2-274d-5e1547a5e125.png)

### 押されたボタンの検出
どのボタンが押されたかは、関数の戻り値を見ればわかります。この戻り値をExcelのIF文などで判断して、シーケンス処理の流れを変えたり、止めたりできます。

| 戻り値 | 意味 |
|:-|:-|
|	1	|[OK]ボタンが押された|
|	2	|[キャンセル]ボタンが押された|
|	3	|[中止]ボタンが押された|
|	4	|[再試行]ボタンが押された|
|	5	|[無視]ボタンが押された|
|	6	|[はい]ボタンが押された|
|	7	|[いいえ]ボタンが押された|

（http://officetanaka.net/excel/vba/function/msgbox.htm　より引用）

実際にExcel上で実行した結果が以下です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/3fa25e7c-e5b0-1ae5-8273-b4a62860b37d.png)


### まとめ
今回はSequence Makerでいろいろな種類のメッセージボックスを表示する方法について解説しました。アイコンも表示されるので、ちょっとしたアクセントに良さそうです。他にもいろいろな組み合わせでメッセージボックスを表示できるので、お試しください。