返回列表 上一主題 發帖

[發問] 能否幫我看看如何將此程式更改成以 小時 分鐘 秒數 計算(已解決)

回復 10# vpower
我是2003版 在使用表單中 WindowsMediaPlayer 第一次會有系統的警示提問,
所以我改用工作表插入物件的 WindowsMediaPlayer ,
如圖

你在表單加入 WindowsMediaPlayer 控制項,須修改表單的程式碼將Sheet1. 刪掉
Private Sub UserForm_Initialize()
    With Sheet1.WindowsMediaPlayer1
       .URL = "d:\愛的路上我和你.mp3"  '請修改檔案
        '.Visible = False
        .Controls.Play
    End With
    事件
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Sheet1.WindowsMediaPlayer1.Controls.Stop
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Workbook_Open()
'
'
'''''''你用的是表單的 WindowsMediaPlayer 控制項''''''''''''''
''''''''Workbook_Open這一段就不需用了''''''''''''''
    With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
       .URL = "d:\愛的路上我和你.mp3"  '請修改音樂檔案
        .Visible = False
        .Controls.Stop
    End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    事件提醒          '自動於時間到提醒
    If S2 <> "" Then MsgBox S2
End Sub

TOP

本帖最後由 vpower 於 2011-5-15 11:55 編輯

回復 11# GBKEE


    我看不是很懂,我自己在您之前寫的那個+了一段(已用紅色字體顯示),請您幫我看看會不會出問題,感謝.
-------------------------------------------------------------------------------
      With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
        .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
       .Visible = False
       .Controls.stop
        End With
        
    For J1 = 2 To Sheets("Sheet1").[C65536].End(xlUp).Row
        If Range("C" & J1) <> "" And IsDate(Range("C" & J1)) Then
        ''''''''''''''''''''''''''''''''''''''''''''''''
            I1 = DateDiff("D", Date, Range("C" & J1))
            If I1 >= 0 And I1 <= 90 Then S1 = "在90天內過期"
            If I1 <= 60 Then S1 = "在60天內過期"
            If I1 <= 30 Then S1 = "在30天內過期"
            If I1 < 0 Then S1 = "已過期" & (-1) * (I1) & "天"
            If S1 <> "" Then S2 = S2 & Sheets("Sheet1").Range("A" & J1) & "-" & S1 & vbNewLine & vbNewLine
            S1 = "": I1 = 0
        '''''''''''''''''''''''''''''''''''''''''''
        End If
    Next
    If S2 <> "" Then
        With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
        .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
        .Visible = False
        .Controls.Play
        End With
    End If
   
If S2 <> "" Then MsgBox S2 Else
-------------------------------------------------------------------------------

TOP

回復 11# GBKEE

關於以下您的程式,我也想用判斷句去寫,例如:1小時,1分鐘,1秒鐘以前提醒,然後再加上音效,可是好像無法像以天計算的那個寫法一樣了,我該怎麼改寫呢?謝謝.
  1. Private Sub CommandButton1_Click()
  2.     Dim TheDay#, Msg$, J1%, S$, H$
  3.     For J1 = 2 To Sheets("Sheet1").[C65536].End(xlUp).Row
  4.         If Range("C" & J1) <> "" And IsDate(Range("C" & J1)) Then
  5.             TheDay = Now - Range("C" & J1).Value: Msg = " 時間 已過"
  6.             If Range("C" & J1) >= Now Then TheDay = Range("C" & J1) - Now: Msg = " 時間 還有"
  7.             H = IIf(Abs(Int(TheDay)) > 0, Abs(Int(TheDay)) & "天", "") & Format(TheDay, "hh小時:mm分鐘:ss秒")
  8.             H = Replace(Replace(Replace(H, "00小時:", ""), "00分鐘:", ""), ":00秒", "")
  9.             S = IIf(S = "", "", S & vbNewLine) & "距離 " & Sheets("Sheet1").Range("A" & J1) & Msg & H
  10.         End If
  11.     Next
  12.     If S <> "" Then MsgBox S, , Format(Now, "dddddd ttttt")
  13. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-5-15 13:15 編輯

回復 12# vpower
給你附檔 你無法視使用, 所以你改用表單的控制項WindowsMediaPlayer1 來測試,還是無法適用對嗎?
你改用表單WindowsMediaPlayer1的控制項,要修改UserForm 表單的程式碼部分如下
  1. Private Sub UserForm_Initialize()
  2.     With WindowsMediaPlayer1   ' -> 表單的WindowsMediaPlayer1
  3.        .URL = "d:\愛的路上我和你.mp3"  '請修改檔案
  4.         .Visible = False
  5.         .Controls.Play
  6.     End With
  7.     事件
  8. End Sub
  9. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  10.     WindowsMediaPlayer1.Controls.Stop   ' -> 表單的WindowsMediaPlayer1
  11. End Sub
複製代碼
'''''''你用的是表單的 WindowsMediaPlayer 控制項''''''''''''''
''''''''SUB Workbook_Open()的程式碼中  這一段就不需用了''''''''''''''
    With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
       .URL = "d:\愛的路上我和你.mp3"  '請修改音樂檔案
        .Visible = False
        .Controls.Stop
    End With

回復 12# vpower
先把11樓的問題 搞定!

TOP

本帖最後由 vpower 於 2011-5-15 17:47 編輯

回復 14# GBKEE


    關於天數的這個.大致上應該沒問題,我用您的修改了一下,如下
不知道有沒有按下確定後可以關閉音樂的方法,就是點確認後去執行的單字.我找到一個如下:
  1. K% = MsgBox "繼續?", vbYesNo, "作業一"
  2. Select Case K%
  3. Case vbYes
  4. '選"是"的處理步驟
  5. ....
  6. Case vbNo
  7. '選"否"的處理步驟
  8. ....
  9. End Select
  10. MsgBox(
複製代碼
然後應該只剩下13樓的問題了,再次感謝您的大力協助,不知道我該怎麼樣才能像你一樣呢?
  1. Private Sub Workbook_Open()
  2.       With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
  3.         .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
  4.        .Visible = False
  5.        .Controls.stop
  6.         End With
  7.         
  8.     For J1 = 2 To Sheets("Sheet1").[C65536].End(xlUp).Row
  9.         If Range("C" & J1) <> "" And IsDate(Range("C" & J1)) Then
  10.         ''''''''''''''''''''''''''''''''''''''''''''''''
  11.             I1 = DateDiff("D", Date, Range("C" & J1))
  12.             If I1 >= 0 And I1 <= 90 Then S1 = "在90天內過期"
  13.             If I1 <= 60 Then S1 = "在60天內過期"
  14.             If I1 <= 30 Then S1 = "在30天內過期"
  15.             If I1 < 0 Then S1 = "已過期" & (-1) * (I1) & "天"
  16.             If S1 <> "" Then S2 = S2 & Sheets("Sheet1").Range("A" & J1) & "-" & S1 & vbNewLine & vbNewLine
  17.             S1 = "": I1 = 0
  18.         '''''''''''''''''''''''''''''''''''''''''''
  19.         End If
  20.     Next
  21.     If S2 <> "" Then
  22.         With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
  23.         .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
  24.         .Visible = False
  25.         .Controls.Play
  26.         End With
  27.     End If
  28.     If S2 <> "" Then MsgBox S2 Else
  29. End Sub
複製代碼

TOP

回復 15# vpower
是這樣嗎?
  1. Private Sub Workbook_Open()
  2.     Dim J1%, S1$, S2$
  3.     With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
  4.         .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
  5.         .Visible = False
  6.         .Controls.stop
  7.     End With
  8.     For J1 = 2 To Sheets("Sheet1").[C65536].End(xlUp).Row
  9.         If Range("C" & J1) <> "" And IsDate(Range("C" & J1)) Then
  10.         ''''''''''''''''''''''''''''''''''''''''''''''''
  11.             I1 = DateDiff("D", Date, Range("C" & J1))
  12.             If I1 >= 0 And I1 <= 90 Then S1 = "在90天內過期"
  13.             If I1 <= 60 Then S1 = "在60天內過期"
  14.             If I1 <= 30 Then S1 = "在30天內過期"
  15.             If I1 < 0 Then S1 = "已過期" & (-1) * (I1) & "天"
  16.             If S1 <> "" Then S2 = S2 & Sheets("Sheet1").Range("A" & J1) & "-" & S1 & vbNewLine & vbNewLine
  17.             S1 = "": I1 = 0
  18.         '''''''''''''''''''''''''''''''''''''''''''
  19.         End If
  20.     Next
  21.     If S2 <> "" Then
  22.         With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
  23.             .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
  24.             .Visible = False
  25.             .Controls.Play          '播放音樂
  26.           ''''''''''''''''''''''''''''''''''''
  27.             MsgBox S2
  28.             .Controls.stop          '關閉音樂
  29.             '''''''''''''''''''''''''''''''''
  30.         End With
  31.     End If
  32.     'If S2 <> "" Then MsgBox S2 Else
  33. End Sub
複製代碼

TOP

回復 16# GBKEE


    是的,跟我要的一樣,真的是很感謝,現在只差那個幾小時前,幾分鐘前,幾秒鐘前,
和這次完成的以幾天前幾乎一樣,只是把幾天前改成幾小時前,幾分鐘前幾,秒鐘前,
判斷式我就不太會寫,可能要再麻煩您,謝謝(一樣要有音樂喔^^)
我希望能夠寫在Textbox上或是Input也可以.

TOP

回復 17# vpower
是這樣嗎!
  1. Private Sub CommandButton1_Click()
  2.     Dim TheDay#, Msg$, J1%, S$, Hh$, Mm$, Ss$
  3.     For J1 = 2 To Sheets("Sheet1").[C65536].End(xlUp).Row
  4.         If Range("C" & J1) <> "" And IsDate(Range("C" & J1)) Then
  5.             TheDay = Now - Range("C" & J1).Value: Msg = " 時間 已過"
  6.             If Range("C" & J1) >= Now Then TheDay = Range("C" & J1) - Now: Msg = " 時間 還有"
  7.             If Abs(Int(TheDay)) > 0 Then
  8.               Mm = Format(Minute(TheDay), "00分鐘")
  9.               Ss = Format(Second(TheDay), "00秒")
  10.               Hh = Abs(Int(TheDay)) * 24 + Hour(TheDay) & "小時" + Mm + Ss
  11.             Else
  12.                 Hh = Format(TheDay, "hh小時mm分鐘ss秒")
  13.                 Hh = Replace(Hh, "00小時", "")
  14.             End If
  15.             Hh = Replace(Replace(Hh, "00分鐘", ""), "00秒", "")
  16.             S = IIf(S = "", "", S & vbNewLine) & "距離 " & Sheets("Sheet1").Range("A" & J1) & Msg & Hh
  17.         End If
  18.     Next
  19.     If S <> "" Then
  20.         With Sheet1.WindowsMediaPlayer1     '加入MediaPlayer播放音樂
  21.             .URL = "D:\數羊歌.MP3"  '請修改音樂檔案
  22.             .Visible = False
  23.             .Controls.Play          '播放音樂
  24.             MsgBox S
  25.             .Controls.Stop          '關閉音樂
  26.         End With
  27.     End If
  28. End Sub
複製代碼

TOP

回復 18# GBKEE


    我該如何寫出IF判別式,設定讓他1小時或5分鐘或30秒以前提醒呢?謝謝!

TOP

回復 19# vpower
試試看對?

測試.rar (29 KB)

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題