小規模老人保健施設の給食業務向けExcelVBA練習帳、エクセルVBAで電光掲示板もどきを作る。

Excel VBA

エクセルを非表示にして単独アプリのように見せかける

Application.Left = -Application.Width

ユーザーフォームが表示されるときに、Application.Leftに  マイナスのApplication.Widthを与えるとエクセル本体をPC画面の左端に押し出すことができます。(フォームだけが画面に残ります)

アプリを終了するとき。エクセル本体を基の位置に戻してからフォームを閉じるようにしてます

万一マクロ稼働中にエラーが起きると、エクセルが左端から戻らないまま終了するので、エクセル本体が見えなくなります。(見えなくても起動中ですからタスクバーにエクセルアイコンがあるのでそれを右クリックメニューから移動を選択したらキーを何回か押すと画面の左から出てきます。)
Private Sub UserForm_Initialize()
'元々のエクセルの表示位置を保存する(変数宣言はジェネラルに)
mytop = Application.Top
myleft = Application.Left

'エクセル本体を非表示にする
Application.WindowState = xlNormal
Application.Left = -Application.Width
End Sub

 

画面に残ったフォームの様子です。

コンボボックスの表示文例リストからどれか選択してGOボタンを押します

(新しい表示文は直接コンボボックスに書き込めばSheet1の所定の場所に記録されます)

左端から文が流れます

ストップボタンを押すとフォームを終了します。

(エクセル本体は元の位置に戻ります)

コード

電光掲示板風にText文が右から左に流れて行く動作のコードです。

Private Sub CommandButton1_Click()

If ComboBox1.Text = "" Then
    MsgBox "表示する文字列が選択されていません・・又は、文字列を書き込んで下さい。"
    Exit Sub
End If
'テキスト2はボックスの長さをAutoSize=Trueにセットしています。
Dim i As Long, maxs As Long, moji As String
If kensa(ComboBox1.Text) = False Then
    '表示するテキストが書き込みしてなければ新しく追加書き込みする
    maxs = ActiveSheet.Rows.Count
    Cells(maxs, 5).End(xlUp).Offset(1) = ComboBox1.Text
End If
'コンボボックスに テキスト内容データの範囲をセットする
ComboBox1.RowSource = "e1:e" & Range("e1").CurrentRegion.Rows.Count

Me.Height = 115
TextBox2.Text = ComboBox1.Text
ComboBox1.Visible = False
CommandButton1.Visible = False
CommandButton2.Visible = True
CommandButton3.Visible = False
CommandButton2.SetFocus

'表示テキストの移動スピードをセットする

'電光掲示板の処理本体============================

Do
    If CommandButton1.Caption = "stop" Then Exit Do
'    '待ち時間を作る
    Sleep ScrollBar1.Value
'    Application.Wait [Now()] + wait_sec / 86400
'    For i = 1 To maxs
'        Cells(i, 1) = ""
'    Next i
    '文字列を左方向へ移動させる
    TextBox2.Left = TextBox2.Left - 1
    
    '===========
    DoEvents    '処理をwindowsに渡す
    '===========
    '文字列の右端がロードの左端に達したら
    'ロードの右端に位置を変更する
    If TextBox2.Left + TextBox2.Width <= 0 Then
        TextBox2.Left = Me.Width
    End If
Loop
'==================================================

CommandButton1.Caption = "GO"
CommandButton1.Visible = True
CommandButton2.Visible = False
'TextBox1.Text = ""
End Sub

VBA覚え立の頃作った、大分昔のものです。もっとやり用があったのでしょうが、当時はこれが精いっぱいでしたね。

自分にとってVBAの原点になるアプリ?…です。

ダウンロード

本プログラムはエクセル2013で作成しています。他のバージョンでは動作可能かはわかりません。また、最近(2022年以降)のエクセルではマクロを含んだネット経由のダウンロードファイルは動作しないようになっているようです(確認していません。)

下のカードからダウンロードしてください。

コメント

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