Saya menulis kode berikut:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Dan saya mendapatkan pesan kesalahan:
"atribut tidak valid di Sub atau Fungsi"
Apakah Anda tahu apa yang saya lakukan salah?
Saya mencoba menggunakan Global
bukan Public
, tetapi mendapat masalah yang sama.
Saya mencoba menyatakan fungsi itu sendiri sebagai `Publik, tetapi itu juga tidak ada gunanya.
Apa yang harus saya lakukan untuk membuat variabel global?
excel
vba
scope
global-variables
Nimrod
sumber
sumber
Function
/Sub
, tidak hanya di luar: "Variabel tingkat modul dapat dideklarasikan dengan pernyataan Redup atau Pribadi di bagian atas modul di atas definisi prosedur pertama." (dari Cakupan variabel dalam Visual Basic for Applications )Ini adalah pertanyaan tentang ruang lingkup .
Jika Anda hanya ingin variabel bertahan seumur hidup dari fungsi, gunakan
Dim
(kependekan dari Dimensi ) di dalam fungsi atau sub untuk mendeklarasikan variabel:Sebuah global yang variabel (seperti SLaks menunjukkan) dinyatakan di luar fungsi menggunakan
Public
kata kunci. Variabel ini akan tersedia selama aplikasi berjalan Anda. Dalam kasus Excel, ini berarti variabel akan tersedia selama buku kerja Excel tertentu terbuka.Anda juga dapat memiliki variabel yang hanya dapat diakses dalam modul (atau kelas) tertentu dengan mendeklarasikannya dengan
Private
kata kunci.Jika Anda membuat aplikasi besar dan merasa perlu menggunakan variabel global, saya akan merekomendasikan membuat modul terpisah hanya untuk variabel global Anda. Ini akan membantu Anda melacak mereka di satu tempat.
sumber
Untuk menggunakan variabel global, Masukkan Modul Baru dari VBA Project UI dan deklarasikan variabel menggunakan
Global
sumber
Public
vs denganGlobal
kata kunci?Public
danGlobal
fungsinya hampir identik ..Global
berasal dari versi VB yang lebih lama"Pertanyaannya sebenarnya tentang ruang lingkup, seperti yang dikatakan orang lain.
Singkatnya, pertimbangkan "modul" ini:
Anda dapat memeriksa referensi MSDN ini untuk informasi lebih lanjut tentang deklarasi variabel dan Pertanyaan Stack Overflow lainnya untuk mengetahui lebih lanjut tentang bagaimana variabel keluar dari ruang lingkup.
Dua hal cepat lainnya:
sumber
Jika fungsi ini ada dalam modul / kelas, Anda bisa menuliskannya di luar fungsi, jadi sudah
Global Scope
. Lingkup Global berarti variabel dapat diakses oleh fungsi lain di modul / kelas yang sama (jika Anda menggunakandim
sebagai pernyataan deklarasi, gunakanpublic
jika Anda ingin variabel dapat diakses oleh semua fungsi di semua modul):sumber
Buat bilangan bulat publik dalam Deklarasi Umum.
Kemudian dalam fungsi Anda, Anda dapat meningkatkan nilainya setiap kali. Lihat contoh (berfungsi untuk menyimpan lampiran email sebagai CSV).
sumber
Cara yang baik untuk membuat variabel Publik / Global adalah dengan memperlakukan Formulir seperti objek kelas dan mendeklarasikan properti dan menggunakan Public Property Get [variabel] untuk mengakses properti / metode. Anda juga mungkin perlu referensi atau meneruskan Referensi ke modul Formulir instantiated. Anda akan mendapatkan kesalahan jika Anda memanggil metode ke formulir / laporan yang ditutup.
Contoh: lulus Me.Form.Module.Parent ke dalam sub / fungsi tidak di dalam formulir.
Jadi di modul lain Anda akan dapat mengakses:
Jika Anda menggunakan Late Binding seperti saya selalu memeriksa nilai Null dan objek yang tidak ada sebelum mencoba melakukan pemrosesan apa pun.
sumber
Anda juga dapat menggunakan -
Ini diuji di kantor 2010
sumber