Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengubah Suai Sel dalam Excel UDFs Tanpa Mengembalikan Array?
Excel UDF: Mengubah Suai Sel Tanpa Mengembalikan Tatasusunan
Dalam Excel, User Defined Functions (UDF) biasanya mengembalikan nilai atau tatasusunan. Walau bagaimanapun, terdapat senario di mana UDF perlu mengubah suai sel lain tanpa mengembalikan tatasusunan. Ini boleh dicapai melalui teknik kompleks yang melibatkan pemasa Windows dan acara Application.OnTime.
Isu:
Pertimbangkan UDF bernama New_Years yang mengambil masa dua tahun sebagai input dan mengembalikan susunan tarikh Hari Tahun Baru antara tahun-tahun tersebut. Walau bagaimanapun, untuk mengisi tatasusunan dalam Excel, pengguna mesti memilih sel secara manual, masukkan formula dan tekan Ctrl Shift Enter. Had ini menghalang UDF daripada mengisi tarikh secara automatik.
Penyelesaian:
Walaupun sekatan Excel pada UDF mengubah suai sel secara langsung, penyelesaian menggunakan pemasa dan Aplikasi Windows. Acara OnTime membolehkannya. Dengan memulakan pemasa Windows dari dalam UDF, Pemasa Aplikasi.OnTime seterusnya boleh dijadualkan untuk melaksanakan tindakan yang sebaliknya akan dilarang dalam UDF.
Contoh Kod:
Kod berikut menunjukkan cara melaksanakan teknik ini menggunakan Koleksi untuk menyimpan rujukan sel tempat UDF dipanggil. Dua rutin pemasa, AfterUDFRoutine1 dan AfterUDFRoutine2, digunakan untuk mengendalikan acara pemasa.
Public Sub AfterUDFRoutine1() ' Stop the Windows timer If mWindowsTimerID <> 0 Then KillTimer 0&, mWindowsTimerID ' Cancel any previous OnTime timers If mApplicationTimerTime <> 0 Then Application.OnTime mApplicationTimerTime, "AfterUDFRoutine2", , False End If ' Schedule timer mApplicationTimerTime = Now Application.OnTime mApplicationTimerTime, "AfterUDFRoutine2" End Sub Public Sub AfterUDFRoutine2() Dim Cell As Range ' ... Do tasks not allowed in a UDF ... End Sub
Penggunaan:
Untuk menggunakan teknik ini, UDF (cth., AddTwoNumbers ) boleh dibuat dalam modul biasa. Dalam UDF, rutin pemasa dimulakan dan rujukan sel sel panggilan disimpan dalam Koleksi. Rutin pemasa kemudiannya mengubah suai sel yang diperlukan di luar skop UDF.
Dengan memanfaatkan pemasa Windows dan acara Aplikasi.OnTime, ia menjadi mungkin untuk mencipta UDF yang mengubah suai sel tanpa mengembalikan tatasusunan. Teknik ini membolehkan automasi yang lebih besar dan menghapuskan keperluan untuk pengisian tatasusunan manual oleh pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Suai Sel dalam Excel UDFs Tanpa Mengembalikan Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!