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

image

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

image

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.

image

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.