VBA ByRef Argument Type Mismatch

VBA ByRef Argument Type Mismatch

Jenis Argumen ByRef Ketidakcocokan di Excel VBA

Artikel ini menjelaskan kesalahan yang ditemui saat menggunakan Excel VBA ByRef sebagai ‘Kesalahan Ketidakcocokan Jenis Argumen.’ Sebelum itu, izinkan saya memperkenalkan Anda dengan ‘By Ref’ terlebih dahulu. Variabel adalah kunci untuk bahasa pemrograman apa pun, dan VBA juga tidak berbeda. Kita telah melihat banyak cara untuk mendeklarasikan variabel. Salah satu cara mendeklarasikan variabel adalah dengan menggunakan kata ‘ByRef’ dan ‘ByValByValVBA ByVal atau “By Value” adalah pernyataan yang memudahkan pengguna untuk mereset nilai utama, yaitu dengan menggantinya dengan sub prosedur lain di excel. Ini adalah praktik umum ketika pengguna mendapatkan nilai prosedur utama hingga 0. Baca lebih lanjut.’

Apa Arti ByRef?

‘ByRef’ berarti ‘Dengan Referensi’ menggunakan kata ini, kita dapat meneruskan argumen ke prosedur (untuk sub & fungsi) dengan referensi. Berbeda dengan saudaranya, ‘By Val’, yang tidak fleksibel tetapi sifatnya tetap.

Untuk memahami ini, mari kita lihat dua makro di bawah ini.

Kode:

Sub Macro1() Dim A As Long A = 50 Macro2 A MsgBox A End Sub Sub Macro2(ByRef A As Long) A = A * 10 End Sub

Kami memiliki dua subprosedur di sini bernama Makro1 dan Makro2, masing-masing. Untuk memahami ini dengan lebih baik, jalankan makro baris demi baris dengan menekan tombol F8.

Tekan tombol F8 untuk menangkap nilai variabel ‘A’ adalah 50.

Baris kode berikutnya mengatakan ‘Macro2 A,’ yaitu, nama makro kedua, dan ‘A’ adalah variabel yang didefinisikan melalui kata ‘By Ref’.

Seperti yang Anda lihat di atas, saat kita mengeksekusi baris kode ‘Macro2 A,’ itu telah melompat ke sub prosedur VBA berikutnyaVBA Sub ProcedureSUB di VBA adalah prosedur yang berisi semua kode yang secara otomatis memberikan pernyataan sub akhir dan bagian tengah digunakan untuk pengkodean. Sub pernyataan dapat bersifat publik dan pribadi dan nama subprosedur wajib ada di VBA. Baca lebih lanjut dari prosedur di atas.

Kita dapat melihat nilai variabel ‘A’ adalah 50 karena kita telah menggunakan kata ‘ByRef’ untuk mendeklarasikan variabel ‘A’, yang sama seperti di Macro1. Oleh karena itu, telah menangkap nilai yang diberikan ke variabel ini ‘A’ dari Macro1 .

Sekarang, dalam persamaan makro ( Makro2 ) ini tertulis A = A * 10 yaitu A = 50 * 100. Tekan tombol F8 tiga kali untuk kembali ke makro di atas ( Makro1 ).

Sekarang, tekan tombol F8 sekali lagi tombol F8 untuk melihat nilai variabel ‘A’ pada kotak pesan di VBAMessage Box Pada VBAVBA fungsi MsgBox adalah fungsi keluaran yang menampilkan pesan umum yang disediakan oleh pengembang. Pernyataan ini tidak memiliki argumen dan pesan yang dipersonalisasi dalam fungsi ini ditulis di bawah tanda kutip ganda sedangkan untuk nilai referensi variabel disediakan.baca lebih lanjut.

Nilainya mengatakan 500.

Meskipun nilai yang telah kami tetapkan dalam makro ini (Macro1) adalah 50 menggunakan kata ByRef, kami memicu sub prosedur Macro2 mempertahankan nilai variabel ‘A’ dari Macro1. Kemudian, kami mengeksekusi nilai A dengan mengalikan 10.

3 Alasan Teratas untuk Ketidakcocokan Jenis Argumen VBA Byref

Di atas, kita telah melihat bagaimana ‘ByRef’ bekerja, tetapi kita terikat untuk membuat kesalahan yang selalu menghasilkan kesalahan VBA Penanganan kesalahan VBA Kesalahan VBA mengacu pada pemecahan masalah berbagai jenis kesalahan yang ditemui saat bekerja dengan VBA. baca lebih lanjut pesan sebagai ‘ByRef Argument Type Mismatch.’

Itu bisa karena banyak alasan. Bagian ini akan menunjukkan cara memperbaiki kesalahan ini dan men-debug kode.

Alasan Kesalahan #1 – Nama Variabel Berbeda

Salah satu alasan utama untuk mendapatkan kesalahan ini di Excel VBA adalah bahwa variabel yang berbeda telah melewati dua prosedur. Sebagai contoh, lihat kode-kode di bawah ini.

Kode:

Sub Macro1() Dim A As Long A = 50 Macro2 B MsgBox A End Sub Sub Macro2(ByRef A As Long) B = B * 10 End Sub

Di Macro1, kami menggunakan variabel ‘A’, dan di Macro2, kami menggunakan variabel ‘B’. Jadi, jika Anda mencoba menjalankan kode, kami akan mendapatkan Error VBA sebagai ‘ByRef Argument Type Mismatch.’

Seperti yang Anda lihat di atas, variabel ‘B’ disorot karena ketidakcocokan tipe nama variabel.

Solusi: Untuk mengatasi masalah ini, kita harus memastikan bahwa nama variabel di kedua prosedur sudah tepat.

Alasan Kesalahan 2: Tipe Data Variabel Berbeda

Walaupun nama variabelnya sama, tetap saja menyebabkan error. Itu karena tipe data yang kami tetapkan untuk mereka. Sebagai contoh, lihat kode di bawah ini.

Kode:

Sub Macro1() Dim A Sebagai Integer A = 50 Macro2 A MsgBox A End Sub Sub Macro2(ByRef A As Long) A = A * 10 End Sub

Dalam kode di atas, kami telah mendeklarasikan variabel ‘A’ sebagai tipe data Integer di Macro1. Namun, di Macro2, variabel yang sama diberi tipe data ‘Long.’

Saat kami menjalankan kode ini, ini akan menyebabkan kesalahan VBA ‘ByRef Argument Type Mismatch.’

Itu karena kami telah menetapkan dua tipe data berbeda untuk nama variabel yang sama.

Solusi: Tipe data harus sama di kedua prosedur.

Alasan Kesalahan 3: Tipe Data Variabel Tidak Ada di Satu Makro

Kesalahan Excel VBA, ‘ByRef Argument Type Mismatch,’ dapat terjadi karena tipe data yang ditetapkan dalam satu makro, bukan makro lainnya.

Kode:

Sub Macro1() A = 50 Macro2 A MsgBox A End Sub Sub Macro2(ByRef A As Long) A = A * 10 End Sub

Dalam kode Macro1 di atas, kami belum mendeklarasikan variabel apa pun tetapi menetapkan nilai variabel.

Di sisi lain, untuk Macro2, kami telah mendeklarasikan variabel ‘A’ sebagai long. Jadi jika Anda mencoba menjalankan kode ini, itu akan menyebabkan kesalahan VBA ‘ByRef Argument Type Mismatch’.

Solusi1: Solusi pertama adalah mendeklarasikan variabel di kedua prosedur dan menetapkan tipe data yang sama untuk menghindari situasi ini.

Solusi2: Solusi alternatif adalah membuat deklarasi variabel wajib dengan menambahkan kata ‘Option Explicit’ di bagian atas modul.

Apa yang akan dilakukan adalah sebelum menampilkan VBA ‘ByRef Argument Type Mismatch,’ Error, ia meminta kita untuk mendeklarasikan variabel terlebih dahulu.

Jadi, opsi Option ExplicitOption ExplicitVBA secara eksplisit membuat pengguna wajib mendeklarasikan semua variabel sebelum menggunakannya; variabel apa pun yang tidak ditentukan akan menimbulkan kesalahan saat eksekusi pengkodean. Kami dapat mengaktifkannya untuk semua kode dari opsi hingga memerlukan deklarasi variabel. Baca lebih lanjut selalu berguna di VBA.

Hal-hal untuk diingat

  • ByRef adalah kebalikan dari By Val.
  • ByRef membawa referensi dari satu prosedur ke prosedur lainnya.
  • Nama variabel dan tipe data harus sama di kedua prosedur.
  • Setiap variabel perlu dideklarasikan secara terpisah dalam kasus beberapa variabel.

Artikel yang Direkomendasikan

Artikel ini telah menjadi panduan untuk VBA ByRef Argument Type Mismatch. Di sini, kami membahas 3 alasan teratas untuk kesalahan ketidakcocokan tipe argumen ByRef dengan solusinya di Excel VBA. Anda dapat mempelajari lebih lanjut tentang VBA dari artikel berikut: –

  • Pencarian Sasaran di VBA
  • Fungsi Pencocokan Indeks VBA
  • Overflow Error di Excel VBA
  • 1004 Kesalahan di Excel VBA

Related Posts