Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21015 / 76732 ←次へ | 前へ→

【61124】Re:一定時間選択変更がなければ上書保存でループにハマル
発言  Abyss  - 09/4/10(金) 12:29 -

引用なし
パスワード
   根本的な問題は別にして置いて、
ご提示のコードを見た感じ、Userformの扱いに
問題点があると思われます(Object扱い)。
スムーズなコードの動作なら、↓のような
取り入れもいいと思います。

----(標準モジュール)------
Public Declare Function SetTimer Lib "User32" _
  (ByVal Hwnd As Long, _
   ByVal nIDEvent As Long, _
   ByVal uElapse As Long, _
   ByVal lpTimerFunc As Long) As Long
  
Public Declare Function KillTimer Lib "User32" _
  (ByVal Hwnd As Long, _
   ByVal uIDEvent As Long) As Long
  
Private Declare Function GetTickCount Lib "Kernel32" _
  () As Long
  
Public IsTimerOn As Boolean
Public changeTime As Date
Public setTime  As Date


Private Const interval = "0:00:08"
Private UF As UserForm1
Private ii As Long
Private oLabel As MSForms.Label


Public Sub timerStart()
  changeTime = Now
  setTime = Now + TimeValue(interval)
  Application.OnTime setTime, "TimeCheck"
  
End Sub

Private Sub TimeCheck()
  If setTime - TimeValue(interval) < changeTime Then
    setTime = changeTime + TimeValue(interval)
    Application.OnTime setTime, "TimeCheck"
    IsTimerOn = True
  Else
    IsTimerOn = False
    test
  End If
End Sub


Private Sub test()
  
  Set UF = New UserForm1
  
  '保険として
  On Error Resume Next
  Set oLabel = UF.Label1
  On Error GoTo 0
  If oLabel Is Nothing Then Exit Sub
  
  ii = GetTickCount() + 30& * 1000&  '30秒タイマ
  
  
  UF.Show vbModal
  
  If UF.Continue Then timerStart
  
  Unload UF
  Set UF = Nothing

End Sub

Public Sub TimerProc(ByVal Hwnd As Long, _
           ByVal uMsg As Long, _
           ByVal idEvent As Long, _
           ByVal dwTime As Long)
             
  If UF Is Nothing Then
    KillTimer 0&, idEvent: Exit Sub
  End If
  
  Dim gap As Long
  gap = ii - dwTime
  If gap <= 0& Then
    KillTimer 0&, idEvent
    UF.Hide
    Exit Sub
  End If
  
  oLabel.Caption = Format$(gap \ 10&, "00 : 00")
           
End Sub

----(Userformモジュール)-------
Public Continue As Boolean
Private TimerID As Long

Private Sub CommandButton1_Click() '継続
  Continue = True
  Hide
End Sub

Private Sub CommandButton2_Click() '終了
  Hide
End Sub

Private Sub UserForm_Initialize()
  TimerID = SetTimer(0&, 0&, 10&, AddressOf TimerProc)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  If TimerID Then KillTimer 0&, TimerID
  Cancel = 1
  Hide
End Sub

----(ThisWorkbookモジュール)-----
Private Sub Workbook_SheetSelectionChange _
       (ByVal Sh As Object, ByVal Target As Range)
  changeTime = Now
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If IsTimerOn Then
    Application.OnTime setTime, "TimeCheck", , False
  End If
End Sub

0 hits

【61104】一定時間選択変更がなければ上書保存でループにハマル ON 09/4/9(木) 16:28 質問
【61105】Re:一定時間選択変更がなければ上書保存で... ON 09/4/9(木) 16:41 発言
【61106】Re:一定時間選択変更がなければ上書保存で... ON 09/4/9(木) 17:02 発言
【61112】Re:一定時間選択変更がなければ上書保存で... n 09/4/9(木) 22:39 発言
【61115】Re:一定時間選択変更がなければ上書保存で... ON 09/4/10(金) 10:11 お礼
【61123】Re:一定時間選択変更がなければ上書保存で... n 09/4/10(金) 12:12 発言
【61124】Re:一定時間選択変更がなければ上書保存で... Abyss 09/4/10(金) 12:29 発言
【61133】Re:一定時間選択変更がなければ上書保存で... ON 09/4/10(金) 18:22 お礼
【61135】Re:一定時間選択変更がなければ上書保存で... n 09/4/10(金) 20:52 発言
【61136】Re:一定時間選択変更がなければ上書保存で... Abyss 09/4/10(金) 22:07 発言
【61140】Re:一定時間選択変更がなければ上書保存で... Abyss 09/4/10(金) 23:06 発言
【61142】Re:一定時間選択変更がなければ上書保存で... n 09/4/11(土) 2:31 発言
【61176】Re:一定時間選択変更がなければ上書保存で... ON 09/4/14(火) 16:00 質問
【61177】Re:一定時間選択変更がなければ上書保存で... ON 09/4/14(火) 16:32 質問
【61179】Re:一定時間選択変更がなければ上書保存で... n 09/4/14(火) 19:14 発言
【61183】Re:一定時間選択変更がなければ上書保存で... n 09/4/15(水) 0:24 発言
【61187】Re:一定時間選択変更がなければ上書保存で... ON 09/4/15(水) 10:43 お礼
【61188】Re:一定時間選択変更がなければ上書保存で... n 09/4/15(水) 12:44 発言
【61189】Re:一定時間選択変更がなければ上書保存で... ON 09/4/15(水) 13:02 発言
【61190】Re:一定時間選択変更がなければ上書保存で... n 09/4/15(水) 15:00 発言
【61192】Re:一定時間選択変更がなければ上書保存で... neptune 09/4/15(水) 15:35 発言
【61193】Re:一定時間選択変更がなければ上書保存で... ON 09/4/15(水) 17:43 お礼
【61198】Re:一定時間選択変更がなければ上書保存で... Abyss 09/4/15(水) 23:38 発言
【61221】Re:一定時間選択変更がなければ上書保存で... ON 09/4/16(木) 15:59 お礼

21015 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free