プロが教えるわが家の防犯対策術!

いつもお世話になります

下記のような、テロップを流すUserformを作りました

Private Sub UserForm_Activate()
Dim i As Integer, j As Long, k As Integer
Dim tmp As String
Dim mes As String
Dim word As Integer
Dim loops As Integer

mes = "グラフ作成中..."
word = 15
loops = 20
mes = String(word, " ") & mes
For k = 1 To loops
For i = 1 To Len(mes)
DoEvents
Sleep 100
tmp = Mid(mes, i, word)
Label1 = tmp
Next
Next
End Sub

単独や、UserForm1.Show では表示されますが
UserForm1.Show vbModeLess だとUserForm画面が真っ白になって
テロップが流れてくれません

何か方法が有るのでしょうか?
分かりましたら教えてください

以上、よろしくお願いいたします

A 回答 (1件)

Application.OnTime を使ったバージョンです。


最低スクロール間隔が1秒なのでスムーズな動きは望めません。

☆ UserForm1 へ

Private Sub UserForm_Initialize()
 Boo_カウント中 = True
 Call スクロール
End Sub

☆ Module1 へ

Public Boo_カウント中 As Boolean
Public Str_メッセージ As String

Sub 起動()
 Str_メッセージ = "グラフ作成中" & " "
 UserForm1.Show vbModeless
End Sub

Sub スクロール(Optional ダミー As Byte)
Dim Day_次回 As Date
 If Boo_カウント中 Then
  UserForm1.Label1.Caption = Str_メッセージ
  Str_メッセージ = Mid(Str_メッセージ, 2) & Left(Str_メッセージ, 1)
  Day_次回 = Now() + TimeSerial(0, 0, 1)
  Call Application.OnTime(EarliestTime:=Day_次回, Procedure:="スクロール")
 End If
End Sub

Sub 停止()
 Boo_カウント中 = False
 Unload UserForm1
End Sub
    • good
    • 0
この回答へのお礼

早速、ご回答ありがとうございます

動かしてみました
ちょっとゆっくりですね

これで検討させていただきます
これからもよろしくお願い申し上げます

お礼日時:2019/11/29 15:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング