Come utilizzare le strutture in VBA? L’utente tipi di dati definiti
Supponiamo che tu stia cercando di creare un sistema di gestione scolastica. Qui, avrai diversi tipi di variabili come il nome dello studente, il numero dello studente, la classe, ecc. Una scuola ha anche degli insegnanti, quindi ci saranno i nomi degli insegnanti, la materia dell’insegnante, le classi, ecc. Allo stesso modo, ci saranno molti altri oggetti come , bibliotecario, classi, principio ecc. Ora avere variabili diverse per ogni entità a scuola sarà un lavoro complicato. Che ne dici di creare un tipo di dati di studente, insegnante, classi, ecc. Che memorizzi i valori ad essi correlati. Per questo possiamo utilizzare tipi di dati definiti di VBA.
In questo articolo impareremo come creare il tuo tipo di dati in VBA. Sono indicati come UDT di VBA. === Definizione di un tipo di dati definito dall’utente Per definire una struttura o UDT in VBA usiamo il blocco Type___End Type.
Ecco la sintassi di un UDT.
Type Tname_Of_Data_Type var1 as datatype 'datatype can be anything, int, array,or even UDT var2 as datatype Var3() as datatype --- VarN() as datatype End Type
Quindi, per definire un tipo di dati personalizzato in VBA, iniziamo con Type Keyword. Quindi scriviamo il nome del nostro tipo di dati personalizzato. È una convenzione usare T prima del nome del tipo di dati in modo da poter distinguere tra link: / excel-macros-and-vba-how-to-use-vba-collections-in-excel [vba collections]
e UDT . I DataTypes possono essere qualsiasi cosa. E Integer, String, Variant, un altro UDT, Arrays, collections, qualsiasi cosa.
Per utilizzare il tuo UDT nel programma, dichiara la sua variabile come qualsiasi altra variabile.
Sub UseUDT 'Declaring variable of user defined data type Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type End Sub
Semplice. Ora per usare le variabili all’interno di questo UDT usiamo l’operatore punto.
Usa il nome del tipo di dati seguito da un punto e il nome della variabile all’interno.
Sub UseUDT 'Declaring variable of user defined data type Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type myVar1.var1="Abcd" myVar2.Var2="xyvz" End Sub
Basta con la teoria, passiamo a un esempio per vedere come funziona.
Creare una variabile studente che memorizzi le informazioni relative allo studente Quindi abbiamo un compito per creare un tipo di dati definito dall’utente che memorizza le informazioni relative agli studenti.
Uno studente ha nome, cognome, numero di ruolo, data di nascita, classe, sezione, materie.
Quindi creiamolo.
'Created a Public Student Data Type Public Type Tstudent fName As String 'For First Name lName As String 'For Last Name rNo As Integer 'For Roll Number clss As string 'For Class section As String 'For Section Name subjects() As String 'For Subjects of student End Type 'Use this Tstudent type in subroutine Sub StudentsInfo() 'Creating and initializing student type variable Dim student1 As Tstudent student1.fName = "Manish" student1.lName = "Singh" student1.rNo = 12334 student1.clss = 10 student1.section = "A" ReDim student1.subjects(2) student1.subjects(0) = "physics" student1.subjects(1) = "Math" 'Printing student details. Debug.Print (student1.fName) Debug.Print (student1.lName) Debug.Print (student1.rNo) Debug.Print (student1.clss) Debug.Print (student1.section) Debug.Print (student1.subjects(0)) Debug.Print (student1.subjects(1)) End Sub
Quando esegui il sottotitolo sopra, stamperà il risultato come mostrato di seguito:
Manish Singh 12334 10 A physics Math |
Creazione di un array di UDT e accesso agli elementi
Allo stesso modo puoi creare tante variabili di tipo Tstudent di cui hai bisogno.
Puoi persino creare un array di tipo Tstudent come qualsiasi altro tipo di dati.
Public Type Tstudent fName As String 'For First Name lName As String 'For Last Name rNo As Integer 'For Roll Number clss As string 'For Class section As String 'For Section Name subjects() As String 'For Subjects of student End Type 'Creating an arrays of Tstudents type Sub SchoolInfo() Dim schoolName As String Dim students() As Tstudent schoolName = "Senior School" ReDim students(10) For i = 0 To 9 students(i).fName = "name" & Str(i + 1) students(i).rNo = i + 1 Next i Debug.Print ("Name : Roll No") For i = 0 To 9 Debug.Print (students(i).fName & " : " & students(i).rNo) Next i End Sub
Quando esegui questo codice, verrà stampato nella finestra immediata.
Name : Roll No name 1 : 1 name 2 : 2 name 3 : 3 name 4 : 4 name 5 : 5 name 6 : 6 name 7 : 7 name 8 : 8 name 9 : 9 name 10 : 10 |
Nel codice sopra, prima la struttura UDT definita prima e il sub (spiegherò in seguito perché). Abbiamo appena creato un array utilizzando una parola chiave dim come facciamo per qualsiasi variabile in VBA. Quindi abbiamo usato Redim per definire la dimensione degli array. Successivamente usiamo un ciclo for per inizializzare l’array.
Per accedere agli elementi della struttura usiamo un altro ciclo for. Questo è tutto.
Perché abbiamo dichiarato UDT in cima al modulo?
Se dichiariamo prima un UDT in un modulo, al di fuori di qualsiasi subroutine o funzione, è disponibile per tutti i moduli nella cartella di lavoro. Significa che se hai cento sottotitoli e funzioni in un modulo, tutti possono dichiarare variabili di tipo Studente nel loro corpo. Se l’UDT non è privato, sarà disponibile per tutti i moduli nella cartella di lavoro. Se si desidera che una struttura (UDT) sia disponibile solo per un modulo contenitore, dichiararla privata.
Private Type Tstudent fName As String lName As String rNo As Integer clss As Integer section As String subjects() As String End Type
Non puoi avere UDT a livello procedurale. Significa che non è possibile definire un tipo di dati definito dall’utente all’interno di una subroutine o di una funzione.
Tipi nidificati definiti dall’utente Supponiamo che tu abbia UDT chiamato automobile. L’auto ha i suoi elementi. Allo stesso modo hai un UDT chiamato bici che può avere le sue proprietà.
Supponiamo ora che tu abbia bisogno di un tipo di dati chiamato veicolo. Il veicolo può avere un’auto e una bici come suoi elementi. Possiamo farlo? Sì, possiamo farlo. Vedi il codice sottostante
Private Type Tcar seats As Integer ac As Boolean typ As String color As String manufacturer As String Dop As Date rc_no As String End Type Private Type Tbike seats As Integer typ As String color As String manufacturer As String Dop As Date rc_no As String End Type Private Type Tvehicle number_of_Vehicle As Integer bike As Tbike car As Tcar End Type Sub vehicleVarification() Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing" myVehicles.car.seats = "4" myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub
Qui, abbiamo definito tre tipi di dati definiti dall’utente. Il primo è Tcar che contiene alcune informazioni relative alle auto. Il secondo è la bici, contiene anche alcune informazioni sulla bici.
Il terzo UDT è Tvehicle. Contiene una variabile per memorizzare il numero di veicoli e due variabili di tipo Tcar e Tbike.
Veicolo di tipo privato
number_of_Vehicle As Integer
bike As Tbike
auto As Tcar
End Type
Per accedere alle variabili di Tcar e Tbike possiamo utilizzare il tipo di dati Tvehicle. Nel sottotitolo abbiamo definito solo una variabile di tipo Tvehicle come myVehicles. Quando creiamo questa variabile, VBA crea anche variabili di Tcar e Tbike.
Per inizializzare e accedere alle variabili di Tcar e Tcar, possiamo usare la variabile myVehicle. Come puoi vedere nel codice.
myVehicles.number_of_Vehicle = 2
myVehicles.bike.seats = 1
myVehicles.bike.typ = “Racing”
myVehicles.car.seats = “4”
myVehicles.car.ac = True
Quando eseguiamo il sottomarino, ecco come si verifica il risultato.
Questa funzione aumenta davvero la potenza della programmazione VBA in modo esponenziale. Puoi strutturare il tuo tipo di dati come entità del mondo reale. È possibile creare relazioni tra i tipi di dati che possono essere utili in un grande progetto.
Quindi sì ragazzi, è così che puoi creare e utilizzare un tipo o una struttura di dati definiti dall’utente in VBA. Spero di essere stato in grado di spiegarlo. Se hai domande riguardanti questo articolo o altre domande relative a VBA, chiedimi nella sezione commenti qui sotto. Sarò davvero felice di sentirti.
Articoli correlati:
link: / general-topics-in-vba-vba-variables-in-excel [Variabili VBA in Excel]
| * VBA sta per Visual Basic for Applications.
È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni di Microsoft Office come MSExcel, MS-Word e MS-Access mentre le variabili VBA sono parole chiave specifiche.
link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope]
| * In tutti i linguaggi di programmazione, abbiamo specificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha specificatori di ambito.
link: / celle-intervalli-righe-e-colonne-in-vba-qual-è-la-differenza-tra-byref-e-byval-argomenti-vba-interview-question [Argomenti ByRef e ByVal]
| Quando un argomento viene passato come argomento ByRef a una funzione secondaria o diversa, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell’argomento originale.
`link: / files-cartella-di-lavoro-e-fogli di lavoro-in-vba-cancella-fogli-senza-richieste-di-conferma-usando-vba-in-microsoft-excel [Elimina fogli senza richieste di conferma usando VBA in Microsoft Excel] Dato che stai eliminando fogli usando VBA, sai cosa stai facendo.
Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.
Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016 | In questo codice, abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi l’abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc. Visualizza un messaggio su La barra di stato di Excel VBA * | La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l’aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.
link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Turn Off Warning Messages Using VBA In Microsoft Excel 2016]
| * Questo codice non solo disabilita VBA avvisa ma aumenta anche l’efficienza temporale del codice. Vediamo come.
Articoli popolari:
link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività]
| Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.
link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel]
| Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]
| Contare i valori con le condizioni utilizzando questa straordinaria funzione. Non è necessario filtrare i dati per contare valori specifici.
La funzione Countif è essenziale per preparare la tua dashboard.
link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel]
| Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.