Mac の Excelで フォーム のみを表示する方法

「Windows」の「Excel VBA」だと、シートを表示させずに フォーム を表示出来るため、擬似的に「Visual Basic」で開発したアプリのような動作をさせる事ができますが、同じことを「Mac」の「Excel」で実行すればアプリの様に見えるかも?とふと疑問に思ったので検証してみました。

「Windows」の「Excel VBA」でシートを表示させずにフォーム表示

まずは普通に「Windows」の「Excel VBA」の場合。テストした環境は「Windows10」と「Excel 2016」です。

Excel VBA

フォーム上の各ボタンにはこのように記述しています。

'フォームに記述
Private Sub Button1_Click() 'Hello World ボタン
    MsgBox ("Hello World")
End Sub

Private Sub Button2_Click() 'Excel シート を開く ボタン
    Application.Visible = True
    Me.Hide
End Sub

メッセージボックスは今回のテストに全く必要ありませんが何となくつけてみました(笑)。

フォームの表示は標準モジュールに記述しました。

'標準モジュールに記述
Public Sub Form_Open()
    Application.Visible = False
    UserForm.Show vbModeless
End Sub

こちらをThisWorkbookのモジュールから呼び出します。

'ThisWorkbookに記述
Private Sub Workbook_Open()
    Call Form_Open
End Sub

一応、後から再表示出来る様に、シート上のボタンにも割り当てました。

Excel VBA

「Application.Visible」が動作しない

テストの前に「Excel」の「環境設定」で「」のチェックを外しておきます。(セキュリティ上はチェックを入れておいたほうがいいので、とりあえずテストの間だけ。)

Excel VBA

設定変更後、上のコードを記述したエクセルファイルを「Mac」で開くと…

Excel VBA

シートが普通に表示されてしまいました。

「Mac」の「Excel VBA」でシートを表示させずにフォーム表示

「Application.Visible」が使えないので、「Windows」版と同じような動作は出来ませんが、何とか擬似的にやってみたいと思い、最小化するようにしてみました。

'フォームに記述
Private Sub Button1_Click() 'Hello World ボタン
    MsgBox ("Hello World")
End Sub

Private Sub Button2_Click() 'Excel シート を開く ボタン
    'Application.Visible = True
    ActiveWindow.WindowState = xlMaximized '最大化
    Me.Hide
End Sub
'標準モジュールに記述
Sub Form_Open()
    'Application.Visible = False
    ActiveWindow.WindowState = xlMinimized '最小化
    UserForm.Show vbModeless
End Sub

「Dock」に「Excel」が出てしまっていますが、それっぽくは見えます。

Excel VBA

Excel VBA

当初の目論見通りには行きませんでしたが、これはこれで使えそうです。

応援よろしくお願いします。
いいね ! してもらえると嬉しいです。

Twitter で

自己紹介

松田 大 と申しますm(_ _)m
インディーズでミュージシャンをやっていたのですがいつのまにか...

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

現在勤めているJTクラウドシステムでは、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発「 Excel VBA 」を活用した効率化ツールの開発を中心に「 ネットワーク・サーバー構築 」や「 Office365製品の導入支援 」、最近は、ホームページ制作に加え、記事の執筆代行や掲載に必要な情報のリサーチ、映像のテロップ入れや切りはりなどの簡単な動画編集なども、まとめて行なっています。

今年7月、代表取締役に選任され、8月に第一子が誕生、公私ともに慌ただしくしています(笑)

お問い合わせはJTクラウドシステムホームページからお願いします。
スポンサーリンク