Espero que seja uma pergunta fácil, mas eu gostaria de uma resposta técnica para isso!
Qual é a diferença entre:
i = 4
e
Set i = 4
no VBA? Eu sei que o último lançará um erro, mas não entendo completamente o porquê.
vba
variable-assignment
Jon Artus
fonte
fonte
Respostas:
set
é usado para atribuir uma referência a um objeto. O equivalente C seriafonte
VBA on the left | C on the right
):Dim A, B As Range | Range A, B;
. Indo com sua analogia,A = B | A = B;
seria correto (e seria em C), masSet A = B | A = &B;
na verdade é correto no VBA (e falharia em C). Em VBA,A = B
eSet A = B
são ambos equivalentes a C'sA = B;
! A distinção acontece em outro lugar.No seu caso, isso produzirá um erro. :-)
Set
atribui uma referência a objeto. Para todas as outras atribuições, aLet
instrução (implícita, opcional e pouco usada) está correta:fonte
Do MSDN :
fonte
Object variable or With block variable not set
erro do VBA :)Set é usado para definir referências de objetos, em vez de atribuir um valor.
fonte
Em cima da minha cabeça, Set é usado para atribuir objetos COM a variáveis. Ao fazer um Set, suspeito que, sob o capô, ele esteja fazendo uma chamada AddRef () no objeto para gerenciar sua vida útil.
fonte
Então, quando você deseja definir um valor, não precisa de "Set"; caso contrário, se você estiver se referindo a um objeto, por exemplo, planilha / intervalo etc., precisará usar "Definir".
fonte
Set é uma palavra-chave e é usado para atribuir uma referência a um objeto no VBA.
Por exemplo, * O exemplo abaixo mostra como usar o Set no VBA.
Dim Dim WS As Worksheet
Defina WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"
fonte