Digamos que você esteja tentando criar um sistema de gestão escolar. Aqui, você terá diferentes tipos de variáveis, como nome do aluno, número da lista do aluno, classe, etc. Uma escola também tem professores, então haverá nomes de professores, disciplina do professor, classes, etc. Da mesma forma, haverá muitos outros objetos como , bibliotecário, classes, princípio, etc. Agora, ter variáveis diferentes para cada entidade na escola será um trabalho confuso. Que tal criar um tipo de dado de aluno, professor, turma, etc, que armazene valores relacionados a eles. Para isso, podemos usar tipos de dados definidos de VBA.
Neste artigo, aprenderemos como você pode criar seu próprio tipo de dados no VBA. Eles são chamados de UDTs de VBA.
Definindo um tipo de dados definido pelo usuário
Para definir uma estrutura ou UDTs em VBA, usamos o bloco Type___End Type. Aqui está a sintaxe de um UDT.
Digite Tname_Of_Data_Type var1 como tipo de dados 'tipo de dados pode ser qualquer coisa, int, array, ou mesmo UDT var2 como tipo de dados Var3 () como tipo de dados --- VarN () como tipo de dados End Type
Portanto, para definir um tipo de dados personalizado no VBA, começamos com a palavra-chave do tipo. Em seguida, escrevemos o nome do nosso tipo de dados personalizado. É convenção usar T antes do Nome do Tipo de Dados para que você possa diferenciar entre coleções vba e UDTs.
Os DataTypes podem ser qualquer coisa. E Integer, String, Variant, outro UDT, Arrays, coleções, qualquer coisa.
Para usar seu UDT no programa, declare sua variável como qualquer outra variável.
Sub UseUDT 'Declarando variável de tipo de dados definido pelo usuário Dim myVar1 como Tname_Of_Data_Type Dim myVar2 como Tname_Of_Data_Type End Sub
Simples. Agora, para usar as variáveis dentro deste UDT, usamos o operador ponto. Use o nome do tipo de dados seguido por um ponto e o nome da variável dentro.
Sub UseUDT 'Declarando variável de tipo de dados definido pelo usuário Dim myVar1 como Tname_Of_Data_Type Dim myVar2 como Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub
Chega de teoria, vamos pular para um exemplo para ver como funciona.
Crie uma variável do aluno que armazene informações relacionadas ao aluno
Portanto, temos a tarefa de criar um tipo de dados definido pelo usuário que armazena informações relacionadas aos alunos.
Um aluno tem nome, sobrenome, número da lista, data de nascimento, classe, seção, disciplinas.
Então, vamos criá-lo.
'Criado um Tipo de Dados Público de Aluno Tipo Público 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 subject () As String ' Para assuntos do tipo de aluno final 'Use este tipo Tstudent na sub-rotina Sub StudentsInfo ()' Criando e inicializando a variável de tipo de aluno 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) = "física" student1.subjects (1) = "Matemática" 'Imprimindo detalhes do aluno. 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 você executar o sub acima, ele imprimirá o resultado conforme mostrado abaixo:
Manish
Singh 12334 10 UMA física Matemática |
Criação de uma matriz de UDTs e elementos de acesso
Da mesma forma, você pode criar quantas variáveis do tipo Tstudent você precisar. Você pode até criar uma matriz do tipo Tstudent como qualquer outro tipo de dados.
Tipo público 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 subject () As String' For Subject of student End Type ' Criando uma matriz de Tstudents digite Sub SchoolInfo () Dim schoolName As String Dim students () As Tstudent schoolName = "Senior School" ReDim students (10) Para i = 0 a 9 alunos (i) .fName = "nome" & Str ( i + 1) students (i) .rNo = i + 1 Next i Debug.Print ("Name: Roll No") Para i = 0 To 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Next i End Sub
Quando você executa este código, ele será impresso na janela imediata.
Nome: Roll No
nome 1: 1 nome 2: 2 nome 3: 3 nome 4: 4 nome 5: 5 nome 6: 6 nome 7: 7 nome 8: 8 nome 9: 9 nome 10: 10 |
No código acima, primeiro definimos a estrutura UDT antes e a sub (explicarei mais tarde o porquê). Acabamos de criar um array usando uma palavra-chave dim, como fazemos para qualquer variável no VBA.
Em seguida, usamos Redim para definir o tamanho das matrizes. Depois, usamos um loop for para inicializar o array.
Para acessar os elementos da estrutura usamos outro loop for. É isso.
Por que declaramos o UDT no topo do módulo?
Se declararmos um UDT primeiro em um módulo, fora de qualquer sub-rotina ou função, ele estará disponível para todos os módulos da pasta de trabalho. Isso significa que se você tiver uma centena de subs e funções em um módulo, todos eles podem declarar variáveis de tipo Student em seu corpo.
Se o UDT não for privado, ele estará disponível para todos os módulos da pasta de trabalho. Se quiser que uma estrutura (UDT) esteja disponível apenas para um módulo recipiente, declare-a privada.
Tipo privado Tstudent fName As String lName As String rNo As Integer clss As seção Integer As String subject () As String End Type
Você não pode ter UDT em um nível processual. Isso significa que você não pode definir um tipo de dados definido pelo usuário dentro de uma sub-rotina ou função.
Tipos aninhados definidos pelo usuário
Digamos que a UDT ligou para um carro. O carro tem seus próprios elementos. Da mesma forma, você tem um UDT chamado bicicleta que pode ter suas próprias propriedades.
Agora, digamos que você precise de um tipo de dados chamado veículo. O veículo pode ter um carro e uma bicicleta como elementos. Nós podemos fazer isso? Sim, podemos fazer isso. Veja o código abaixo
Tipo privado Tcar assenta As Integer ac Como Boolean typ As String color As String fabricante As String Dop As Date rc_no As String End Type Private Type Tbike Seat As Integer typ As String color As String fabricante As String Dop As Date rc_no As String End Type Private Digite 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 4" myVehicles. "myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub
Aqui, definimos três tipos de dados definidos pelo usuário. O primeiro é o Tcar, que contém algumas informações relacionadas aos carros. Em segundo lugar está a bicicleta, ele também contém algumas informações sobre a bicicleta.
O terceiro UDT é Tvehicle. Ele contém uma variável para armazenar o número de veículos e duas variáveis do tipo Tcar e Tbike.
Veículo de tipo privado
number_of_Vehicle As Integer
bicicleta como Tbike
carro As Tcar
Tipo de Fim
Para acessar as variáveis de Tcar e Tbike, podemos usar o tipo de dados Tvehicle. No sub, definimos apenas uma variável do tipo Tvehicle como myVehicles. Quando criamos essa variável, o VBA cria variáveis de Tcar e Tbike também.
Para inicializar e acessar variáveis de Tcar e Tcar, podemos usar a variável myVehicle. Como você pode ver no código.
myVehicles.number_of_Vehicle = 2
myVehicles.bike.seats = 1
myVehicles.bike.typ = "Corrida"
myVehicles.car.seats = "4"
myVehicles.car.ac = True
Quando executamos o sub, é assim que ocorre o resultado.
Esse recurso realmente aumenta o poder de programação VBA exponencialmente. Você pode estruturar seu tipo de dados como entidades do mundo real. Você pode criar relacionamentos entre tipos de dados que podem ser úteis em um grande projeto.
Então, sim pessoal, é assim que você pode criar e usar um tipo de dados ou estrutura definida pelo usuário no VBA. Espero ter sido capaz de explicar isso. Se você tiver alguma dúvida sobre este artigo ou qualquer outra questão relacionada ao VBA, pergunte-me na seção de comentários abaixo. Ficarei muito feliz em ouvir de você.
Variáveis VBA no Excel| VBA significa Visual Basic for Applications. É uma linguagem de programação da Microsoft. É usado com aplicativos do Microsoft Office, como MSExcel, MS-Word e MS-Access, enquanto as variáveis VBA são palavras-chave específicas.
Escopo de Variável Excel VBA| Em todas as linguagens de programação, temos especificadores de acesso à variável que definem de onde uma variável definida pode ser acessada. O Excel VBA não é exceção. O VBA também tem especificadores de escopo.
Argumentos ByRef e ByVal | Quando um argumento é passado como um argumento ByRef para uma subfunção ou função diferente, a referência da variável real é enviada. Quaisquer alterações feitas na cópia da variável, serão refletidas no argumento original.
Exclua planilhas sem prompts de confirmação usando VBA no Microsoft Excel | Como está excluindo planilhas usando o VBA, você sabe o que está fazendo. Você gostaria de dizer ao Excel para não mostrar este aviso e excluir a maldita planilha.
Adicionar e salvar uma nova pasta de trabalho usando VBA no Microsoft Excel 2016| Neste código, primeiro criamos uma referência a um objeto de pasta de trabalho. E então o inicializamos com um novo objeto de pasta de trabalho. A vantagem dessa abordagem é que você pode realizar operações nesta nova pasta de trabalho facilmente. Como salvar, fechar, excluir, etc.
Exibir uma mensagem na barra de status do Excel VBA| A barra de status no Excel pode ser usada como um monitor de código. Quando seu código VBA é longo e você executa várias tarefas usando o VBA, geralmente desativa a atualização da tela para não ver a tela piscando.
Desativar mensagens de aviso usando VBA no Microsoft Excel 2016| Este código não apenas desabilita alertas VBA, mas também aumenta a eficiência de tempo do código. Vamos ver como.
Artigos populares:
50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos farão você trabalhar ainda mais rápido no Excel.
A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.
CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar valores específicos. A função Countif é essencial para preparar seu painel.
Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.