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:
setdigunakan 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 = Bdan Set A = BKEDUA setara dengan C's A = B;! Perbedaannya terjadi di tempat lain.
Dalam kasus Anda, itu akan menghasilkan kesalahan. :-)
Setmemberikan referensi objek. Untuk semua tugas lain, pernyataan (tersirat, opsional, dan sedikit digunakan) Letbenar:
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 setkesalahan 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"