Saya membuat fungsi VBA di Excel 2007. Seseorang memiliki prototipe:
Function ToLevelCode_Range(val As Double, ByRef R As Range)
Saya bisa menyebutnya seperti ini dan mendapat hasil yang benar:
=ToLevelCode_Range(B2, Categories!D1:D4)
Ada sebuah instance, di mana saya ingin parameter kedua menjadi seperangkat nilai tertentu:
=ToLevelCode_Range(B2, { 0.38, 0.78, 1.18, 1.58 })
Ini menghasilkan #VALUE, dan saya bahkan tidak bisa mencapai breakpoint pertama dalam fungsi saya.
Saya secara terprogram menghasilkan spreadsheet, dan jumlah nilai dalam array adalah variabel, jadi saya tidak bisa melakukannya dengan fungsi dengan 5 parameter, dll. Saya tidak tahu apakah VBA memiliki sintaksis daftar argumen variabel, tapi itu akan menjadi pilihan.
Bagaimana saya bisa membuatnya bekerja?
sumber
Jika Anda mengubah parameter fungsi menjadi
itu akan menerima rentang dan array
Tentu Anda perlu menangani berbagai tipe data dalam kode fungsi
Saat dipanggil sebagai
=ToLevelCode_Range(B2, Categories!D1:D4)
R akan mengetikVariant/Object/Range
Saat dipanggil sebagai
=ToLevelCode_Range(B2, { 0.38, 0.78, 1.18, 1.58 })
R akan mengetikVariant/Variant(1 to 4)
sumber