Ini harus bekerja sesuai dengan posting stack overflow lain tetapi tidak:
Dim arrWsNames As String() = {"Value1", "Value2"}
Adakah yang bisa memberi tahu saya apa yang salah?
arrays
vba
initialization
Kairan
sumber
sumber
Dim x() As Variant: x = [{"Value1", "Value2"}]
Dim x() As Variant: x = [{"Value1", "Value2"}]
JIKA Anda menggunakan variabel ... yaitu jikav1 = "Value1"; v2 = "Value2"
, makax = [{v1, v2}]
akan menghasilkan kesalahan, sedangkanx = [{"Value1", "Value2"}]
tidak akan.Jawaban:
Coba ini:
sumber
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
Inisialisasi dari komentar di atas tidak berfungsi untuk saya, karena Array () menciptakan Array of Variants dan bukan StringsDalam kasus spesifik array String Anda dapat menginisialisasi array menggunakan Fungsi Split karena mengembalikan array String daripada array Variant:
Ini memungkinkan Anda untuk menghindari menggunakan tipe data Variant dan mempertahankan tipe yang diinginkan untuk arrWsNames.
sumber
Masalahnya di sini adalah bahwa panjang array Anda tidak terdefinisi, dan ini membingungkan VBA jika array secara eksplisit didefinisikan sebagai string. Varian, bagaimanapun, tampaknya dapat mengubah ukuran sesuai kebutuhan (karena mereka memiliki banyak memori, dan orang-orang umumnya menghindarinya karena banyak alasan).
Kode berikut berfungsi dengan baik, tetapi sedikit manual dibandingkan dengan beberapa bahasa lain di luar sana:
sumber
Maka Anda dapat melakukan sesuatu yang statis seperti ini:
Atau sesuatu yang berulang seperti ini:
sumber
contoh:
hasil:
Nikmati
sunting: saya menghapus fitur menghapus duplikat dan membuat kode lebih kecil dan lebih mudah digunakan.
sumber
variant
Menggunakan
bekerja tetapi
tidak jadi saya sitck ke Variant
sumber
Dim MyArray() as String
, atau ukuran Array tetap:Dim MyArray(1 to 10) as String
.