Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengubah Suai Sel dalam Excel UDFs Tanpa Mengembalikan Array?

Bagaimana untuk Mengubah Suai Sel dalam Excel UDFs Tanpa Mengembalikan Array?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-14 16:59:02880semak imbas

How to Modify Cells in Excel UDFs Without Returning an 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn