Perché VBA / VBScript richiede il prefisso "Imposta"

6

Quando imposto una variabile su un oggetto in VBA / VBScript, ho sempre bisogno di anteporre la frase a "Set" come: Set Dict = CreateObject("Scripting.Dictionary")

Se imposto una variabile su un valore primitivo o su un array, devo omettere il "Set" come: Num = 123

Questo è diverso da linguaggi come JavaScript, PHP, Python ecc. C'è qualche ragione tecnica per cui hanno questo requisito in VBA / VBScript?

    
posta neelsg 21.05.2014 - 09:33
fonte

2 risposte

9

VB e VBA avevano qualcosa chiamato "proprietà di default". Se il tuo codice menzionava l'oggetto senza alcuna proprietà / metodo specificato, allora hai la proprietà di default, non l'oggetto!

Dim vValue as Variant

vValue = textBox1

? TypeName( vValue )

String

Questo dovrebbe funzionare? Bene, sì, perché VB lo interpreta come ...

vValue = textBox1.Text

... perché Testo è la proprietà predefinita della casella di testo.

L'istruzione Set sovrascrive tutto ciò, forzando VB a utilizzare l'oggetto stesso.

Set vValue = textBox1

? TypeName( vValue )

TextBox

    
risposta data 21.05.2014 - 13:40
fonte
0

Nota: quando dico "Visual Basic" qui intendo Visual Basic 6 e prima - not Visual Basic.NET.

Visual Basic è progettato per essere facile da usare. I puntatori sono difficili - e in una certa misura, anche i tipi di riferimento, come quelli usati per gli oggetti nella maggior parte delle lingue moderne.

la sintassi Set è un modo per nascondere questo:

Set foo = Bar() 'Treat foo as reference variable
foo = Bar() 'Treat foo as a value variable

Quindi, le persone che non capiscono i riferimenti possono usare oggetti come le variabili di valore, che sono più facili da capire. Dato che Visual Basic viene in genere utilizzato con la finestra di progettazione dei moduli di Visual Studio per creare applicazioni GUI, è possibile eseguire molte operazioni senza utilizzare riferimenti.

VBA e VBS in genere richiedono un maggiore utilizzo di riferimento (in VBA di solito è necessario utilizzare oggetti Office e in VBS di solito è necessario utilizzare oggetti COM per interagire con Windows), ma la loro sintassi deve ancora seguire quella di Visual Basic richiedono anche la sintassi Set .

    
risposta data 21.05.2014 - 14:07
fonte

Leggi altre domande sui tag