Board logo

標題: 請問如何想起excel vba 內發聲除左BEEP 仲有咩方法? [打印本頁]

作者: tuung    時間: 2014-7-4 17:36     標題: 請問如何想起excel vba 內發聲除左BEEP 仲有咩方法?

同上....請問有咩code可以做到?
作者: C_Law    時間: 2014-7-4 18:21

可以用 Shell 去執行外部程式,例如開 Media Player Classic-Home Cinema 去播 mp3。

Shell ("C:\Path1\mplayerc.exe X:\Path2\12.mp3 /play /close")

c:\path1 是 Media Player Classic 的安裝路徑
x:\path2 是要播放的音效檔的存放路徑
作者: tuung    時間: 2014-7-6 15:24

因為公司電腦超慢....等成幾秒之後先彈出黎....
但我又想做到係可以即刻出聲...好似beep咁..
作者: C_Law    時間: 2014-7-7 17:43

可能 MPC-HC 個程式大,本身 Load 得慢。

試下用 NirCMD,程式細,Load 得快,不過缺點是你要預先知道要播放的音效檔的時間長度:
Shell("X:\Path1\nircmd mediaplay 10000 Y:\Path2\Test.mp3")

Wav 和 MP3 都得。
x:\path1 同 y:\path2 分別是 nircmd.exe 和 test.mp3 的存放位置,兩條 path 都不能有 space(或者可以,我無詳細去試)。
中間的 10000 是要播放的時間(ms),10000 即是 10 秒。如果不知長度,原則上打個好大的數目落去都得(eg. 5 分鐘),不過一旦開始播就要播到指定時間結束為止,如果未播完又再執行這行 Shell,原先播緊但未播完的會繼續播,另外又重新播另一個,即係兩個一齊播,再執行又同時播多一個。
作者: pc2012    時間: 2014-7-7 19:44

If Application.OperatingSystem = "Windows (32-bit) NT 6.01" Then
                    sndPlaySound "C:\Windows\Media\Windows Ringin.wav", 1
                Else
                    sndPlaySound "C:\Windows\Media\ringin.wav", 1
                End If
作者: tuung    時間: 2014-7-8 14:50

整到了...唔該晒.....呢加又有別一個問題...
就係點先可以起USERFORM 入面個TEXTBOX,長期起個格入面...
即係起TESTBOX 按完ENTER後可以自動彈返落起個TEXTBOX入面入資料
我上網搵個係TextBox1.SetFocus 放起其他button就可以用到...
但一放落 textbox入面就會冇反應
作者: C_Law    時間: 2014-7-8 18:21

本帖最後由 C_Law 於 2014-7-8 18:26 編輯
整到了...唔該晒.....呢加又有別一個問題...
就係點先可以起USERFORM 入面個TEXTBOX,長期起個格入面...
即 ...
tuung 發表於 2014/7/8 14:50


你意思是在 Textbox 內按 Enter 後仍然將 Focus 保留在 Textbox?

我不知有無正統的做法。見招拆招的做法,先睇下按 Enter 會跳 Focus 去那一個控制項(假設會跳去 CommandButton1),就由這個控制項的 Enter 做手腳跳回去 Textbox:
  1. Private Return2TB1 As Boolean   'Return focus to TextBox1

  2. Private Sub UserForm_Initialize()
  3.   Return2TB1 = False
  4. End Sub

  5. Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  6.   If KeyCode = 13 Then  'Enter key was pressed
  7.     Return2TB1 = True
  8.   Else
  9.     Return2TB1 = False
  10.   End If
  11. End Sub

  12. Private Sub CommandButton1_Enter()
  13.   If Return2TB1 Then
  14.     Return2TB1 = False
  15.     TextBox1.SetFocus
  16.   End If
  17. End Sub
複製代碼
按 Tab 仍然可以轉 Focus 去下個控制項,也可以 Mouse click 去其它控制項。只係在 TextBox1 內按 Enter 會將 Focus 留在 TextBox1(正確來講,實際上 Focus 是先跳去了下一個控制項再跳返去 TextBox1)。





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2