Mencipta UDF yang Mengubah Suai Sel Lain tanpa Mengembalikan Tatasusunan
Anda mempunyai Tambahan Excel dengan fungsi yang dipanggil New_Years yang kini kembali susunan hari Tahun Baru antara dua tahun yang ditentukan. Walau bagaimanapun, ini memerlukan anda memilih berbilang sel dan menggunakan Ctrl Shift Enter untuk mencipta tatasusunan.
Adakah Kemungkinan untuk Mengelak Penciptaan Tatasusunan?
Ya, mungkin untuk mengubah suai sel lain secara langsung daripada UDF tanpa mengembalikan tatasusunan. Walaupun Excel melarang UDF daripada membuat sebarang perubahan pada sifat sel, terdapat penyelesaian kompleks yang melibatkan penggunaan gabungan pemasa Windows dan Application.OnTime timer.
Gambaran Keseluruhan Penyelesaian
Pelaksanaan Kod
Kod berikut mesti diletakkan dalam modul biasa:
Private Declare Function SetTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long _ ) As Long Private Declare Function KillTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long _ ) As Long Private mCalculatedCells As Collection Private mWindowsTimerID As Long Private mApplicationTimerTime As Date Public Function AddTwoNumbers( _ ByVal Value1 As Double, _ ByVal Value2 As Double _ ) As Double AddTwoNumbers = Value1 + Value2 ' Cache the caller's reference for later use in a non-UDF routine If mCalculatedCells Is Nothing Then Set mCalculatedCells = New Collection On Error Resume Next mCalculatedCells.Add Application.Caller, Application.Caller.Address On Error GoTo 0 ' Set the Windows timer If mWindowsTimerID <> 0 Then KillTimer 0&, mWindowsTimerID mWindowsTimerID = SetTimer(0&, 0&, 1, AddressOf AfterUDFRoutine1) End Function
Rutin Pemasa
Dua rutin pemasa ditakrifkan: AfterUDFRoutine1 dan AfterUDFRoutine2. Mereka mengendalikan penjadualan dan pelaksanaan kod di luar UDF.
Contoh Penggunaan
Dalam lembaran kerja Excel anda, masukkan fungsi AddTwoNumbers dalam sel: =AddTwoNumbers(A1, B1)
Ini akan memulakan proses pemasa.
Nota Penting
Atas ialah kandungan terperinci Bolehkah Anda Mengubah Suai Sel daripada UDF Tanpa Mengembalikan Tatasusunan dalam Excel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!