Tôi có thể tạo tiếng bíp Excel khi tính toán kết thúc không?


13

Tôi có những tính toán thực sự dài trong Excel. Tôi muốn chuyển sự chú ý của tôi khỏi màn hình và hoàn thành công việc tại bàn của tôi, nhưng được cảnh báo khi tính toán kết thúc.

Có ý kiến ​​gì không?


1
Làm thế nào chính xác là bạn đang làm tính toán? Nếu nó ở VBA, tại sao không sử dụng phương pháp "Beep" của VBA ? Bạn đã thử những gì?
Ƭᴇcʜιᴇ007

2
@ techie007 không phải VBA. Chỉ cần các chức năng trong bảng tính Excel lớn.
Eliyahu

1
Tuy nhiên, bạn vẫn có thể sử dụng hàm Beep, đặc biệt nếu SS của bạn thực sự sử dụng "hàm" để tính toán thay vì "công thức". Nhưng "cách" bạn có thể sử dụng nó phụ thuộc rất lớn vào cách bảng tính của bạn hoạt động, điều mà chúng tôi không biết. Giống như bạn chỉ cần gõ một giá trị vào một ô và sau đó phải đợi một thời gian rất dài để nó kết thúc, hoặc bạn nhấn một nút để bắt đầu tính toán sau khi điền vào các ô? NẾU bạn nhấn F11 để mở trình soạn thảo VBA, có một loạt mã trong đó không?
Ƭᴇcʜιᴇ007

@ techie007 Tôi đang sử dụng công thức. Tôi sẽ nhấn F9 sau một loạt công việc và phải chờ.
Eliyahu

Bạn sẽ có những tính toán của bạn theo cách khác. Những gì bạn muốn là không thể nếu tất cả những gì bạn đang làm là bảo Excel thực hiện các phép tính trên sổ làm việc mở
Ramhound

Câu trả lời:


21

OK, một cái gì đó để thử (hướng dẫn giả sử Excel 2007 hoặc mới hơn):

  • Mở sổ làm việc của bạn.
  • Lưu nó dưới dạng SS ( .XLSM) kích hoạt macro .
  • Nhấn Alt-F11 để mở cửa sổ mã hóa VBA.
  • Bấm chuột phải vào VBAProject ( yourbook.xlsm) và chọn Chèn → Mô-đun.
  • Mở "Module1" mới được tạo.
  • Trong mô-đun dán đoạn mã này:

    Sub Auto_Open()
        Application.OnKey "{F9}", "F9Handler"
    End Sub
    

    Điều này sẽ khiến khóa F9 được gán lại mỗi khi SS được mở. Khi bạn nhấn F9, nó sẽ chạy F9Handlerthay vì tính toán thông thường.

  • Trong mô-đun, dán đoạn mã này:

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub
    

    Đây là những gì sẽ được chạy khi bạn nhấn F9. Dòng đầu tiên chạy Application.Calculate(đó là những gì F9 thường thực hiện), và sau đó là Beeps.

  • Tiết kiệm tất cả mọi thứ.

  • Đóng Excel.
  • (Re) Mở XLSM bạn đã thực hiện.
  • Lợi nhuận. :)

Lưu ý: Có thể bạn sẽ phải bật macro và / hoặc biến tài liệu thành tài liệu "đáng tin cậy" để đảm bảo (các) macro chạy như mong đợi.

Thêm thông tin:


5

Giống như những người khác đã đề cập, sử dụng beeplệnh trong Visual Basic (VB):

Function beepNow()
Beep 
End Function

Để có được mã hóa VB, bạn cần phải có Developer tabsẵn (xem: Hiển thị tab Nhà phát triển )

Vì vậy, khi bạn có một sự thay đổi trong một tế bào hoặc điều kiện, nó sẽ phát ra tiếng bíp. Ví dụ macro để gọi mã VBS ở trên:=IF(C2<>C3,beepNow(),"")


2
Chỉ cần lưu ý rằng nếu bạn hiện không sử dụng bất kỳ VBA UDF nào, việc giới thiệu chúng có thể dẫn đến suy giảm hiệu năng lớn (vì, không giống như các chức năng thông thường, chúng chỉ chạy trên luồng chính). Không nên là một vấn đề với một tiếng bíp, nhưng nếu bạn bắt đầu rắc nó ở mọi nơi bạn sẽ gặp vấn đề.
sapi

1
Thật không may, chức năng này sử dụng loa PC của bạn - không phải card âm thanh và loa, mà là loa bên trong. FYI - Ở nhiều công ty, loa PC đã bị xóa hoặc vô hiệu hóa nên bạn sẽ không nghe thấy gì.
raddevus

1

Ngoài ra, để đặt mô-đun vào ss, bạn có thể đặt nó vào Personal.xlsb của mình. Điều này sẽ cho phép bạn có "tiếng bíp" có sẵn cho bất kỳ ss. Để chạy nó, hãy sửa đổi Thanh công cụ truy cập nhanh hoặc chèn một nút / hình dạng để nhấp vào ss của bạn và gán macro cho nó.


Chào mừng đến với Siêu người dùng. Điều này dường như là một nhận xét về các câu trả lời khác chứ không phải là một giải pháp khác biệt đáng kể, đó là những gì bài viết câu trả lời được dành cho. Với một chút đại diện, bạn sẽ có thể gửi bình luận.
fixer1234

0

Câu trả lời được đăng bởi @ cʜιᴇ007 là một câu trả lời xuất sắc với một ngoại lệ mà những người khác đã nhận xét về: Beep phương pháp này dựa trên loa trên bo mạch của bạn (và đôi khi bị vô hiệu hóa) trong máy tính và không sử dụng loa của bạn, vì vậy bạn có thể không nghe thấy gì.

Tôi đang đăng một cách giải quyết dựa trên câu trả lời đó. Nếu có ít nội dung liên quan, tôi sẽ đăng một bình luận thay thế.

Đây là những gì tôi sử dụng để phát âm thanh với VBA trên Windows. Nó sử dụng loa máy tính thông thường của bạn thay vì trên bo mạch và loa thường bị vô hiệu hóa được truy cập bằngBeep phương thức.

Bắt đầu với câu trả lời của @ cʜιᴇ007. Chỉ cần thay đổi Beepđiều này:

PlaySound sound_Up

Bạn có thể thay đổi âm thanh bằng cách thay đổi sound_Upsang một mục khác từ bảng liệt kê SoundType (danh sách) trong mã bên dưới, chẳng hạn như sound_Completehoặc sound_Notify.

Option Explicit
' --------------------------------------------------
' --------------------------------------------------
'   REQUIRED DLL REFERENCE AND CONSTANTS
' --------------------------------------------------
' Reference to external procedure in DLL to play sounds

#If VBA7 Then
    ' 64-bit MS Office
    Private Declare PtrSafe Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#Else
    ' 32-bit MS Office
    Private Declare Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#End If

' --------------------------------------------------
' --------------------------------------------------
'   CONSTANTS
' --------------------------------------------------
'
Public Const SOUND_DO_NOT_WAIT          As String = "&H1"
Private Const SOUND_FILES_PATH          As String = "C:\Windows\Media\"

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC ENUMERATIONS
' --------------------------------------------------
'
Public Enum SoundType
    sound_None = 0
    sound_Up = 1
    sound_Down = 2
    sound_Attention = 3
    sound_Blocked = 4
    sound_Boop = 5
    sound_Complete = 6
    sound_Critical = 7
    sound_Ding = 8
    sound_Error = 9
    sound_Exclamation = 10
    sound_FastDown = 11
    sound_Information = 12
    sound_Notify = 13
    sound_PhoneRing = 14
    sound_RingOut = 15
    sound_Stop = 16
    sound_Tada = 17
    sound_Tone = 18
End Enum

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC METHODS
' --------------------------------------------------
'
Public Sub PlaySound(ByVal sound As SoundType)
' Plays a sound from a list (see the 'SoundType' Enum).  Code execution continues
'   while sound is playing.
    Dim soundFileName                   As String
    soundFileName = GetSoundFileName(sound)

    If Not soundFileName = vbNullString Then
        sndPlaySound32bit SOUND_FILES_PATH & soundFileName, SOUND_DO_NOT_WAIT
    End If
End Sub

' --------------------------------------------------
' --------------------------------------------------
'   PRIVATE DEPENDENCIES
' --------------------------------------------------
'
Private Function GetSoundFileName(ByVal soundToGet As SoundType) As String
' Returns a windows sound file name (not path) from a member of the custom
'   'SoundType' enumeration.

    Dim fName                           As String

    Select Case soundToGet
    Case sound_Up:          fName = "Speech On.wav"
    Case sound_Down:        fName = "Speech Off.wav"
    Case sound_Attention:   fName = "Windows Battery Low.wav"
    Case sound_Blocked:     fName = "Windows Pop-up Blocked.wav"
    Case sound_Boop:        fName = "Speech Misrecognition.wav"
    Case sound_Complete:    fName = "Windows Print complete.wav"
    Case sound_Critical:    fName = "Windows Critical Stop.wav"
    Case sound_Ding:        fName = "Windows Ding.wav"
    Case sound_Error:       fName = "Windows Error.wav"
    Case sound_Exclamation: fName = "Windows Exclamation.wav"
    Case sound_FastDown:    fName = "Speech Sleep.wav"
    Case sound_Information: fName = "Windows Information Bar.wav"
    Case sound_Notify:      fName = "notify.wav"
    Case sound_PhoneRing:   fName = "Windows Ringin.wav"
    Case sound_RingOut:     fName = "Windows Ringout.wav"
    Case sound_Stop:        fName = "chord.wav"
    Case sound_Tada:        fName = "tada.wav"
    Case sound_Tone:        fName = "Windows Balloon.wav"
    Case Else:              fName = vbNullString
    End Select

    GetSoundFileName = fName
End Function
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.