Semoga pertanyaan yang mudah, tetapi saya ingin jawaban teknis untuk ini!
Apa perbedaan antara:
i = 4
dan
Set i = 4
dalam VBA? Saya tahu bahwa yang terakhir akan membuat kesalahan, tetapi saya tidak sepenuhnya mengerti mengapa.
Semoga pertanyaan yang mudah, tetapi saya ingin jawaban teknis untuk ini!
Apa perbedaan antara:
i = 4
dan
Set i = 4
dalam VBA? Saya tahu bahwa yang terakhir akan membuat kesalahan, tetapi saya tidak sepenuhnya mengerti mengapa.
Jawaban:
set
digunakan untuk menetapkan referensi ke suatu objek. Setara C akan menjadi
int i;
int* ref_i;
i = 4; // Assigning a value (in VBA: i = 4)
ref_i = &i; //assigning a reference (in VBA: set ref_i = i)
VBA on the left | C on the right
): Dim A, B As Range | Range A, B;
. Pergi dengan analogi Anda, A = B | A = B;
akan benar (dan itu akan di C), tetapi Set A = B | A = &B;
sebenarnya benar di VBA (dan itu akan gagal di C). Dalam VBA, A = B
dan Set A = B
KEDUA setara dengan C's A = B;
! Perbedaannya terjadi di tempat lain.
Dalam kasus Anda, itu akan menghasilkan kesalahan. :-)
Set
memberikan referensi objek. Untuk semua tugas lain, pernyataan (tersirat, opsional, dan sedikit digunakan) Let
benar:
Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)
Let i = 0
Let i = FunctionReturningAValue(SomeArgument)
' or, more commonly '
i = 0
i = FunctionReturningAValue(SomeArgument)
Dari MSDN :
Atur Kata Kunci: Di VBA, kata kunci Set diperlukan untuk membedakan antara penetapan objek dan penetapan properti default objek. Karena properti default tidak didukung dalam Visual Basic .NET, kata kunci yang ditetapkan tidak diperlukan dan tidak lagi didukung.
Object variable or With block variable not set
kesalahan dari VBA :)
Dari atas kepala saya, Set digunakan untuk menetapkan objek COM ke variabel. Dengan melakukan Set saya menduga bahwa di bawah tenda itu melakukan panggilan AddRef () pada objek untuk mengelola itu seumur hidup.
Set adalah kata kunci dan digunakan untuk menetapkan referensi ke suatu objek di VBA.
Untuk Eg, * Contoh di bawah ini menunjukkan cara menggunakan Set in VBA.
Dim WS As Worksheet
Set WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"