Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

Guia de Referência para VBA

Para utilizar em algumas sessões de formação sobre programação em Visual Basic for Application (VBA) para Microsoft Excel, resolvi criar um pequeno guia de referência em Português.
Este guia simplificado, de 4 páginas e em formato pdf, está agora disponível para que possam usar como referencia (especialmente numa fase inicial) quando estão a programar.

Espero que vos seja útil!

Download do Guia de VBA

Videos do Build 2014 já disponíveis

Durante os dias 2 a 4 de Abril de 2014 decorreu mais uma edição do Build no "The Moscone Center" em São Francisco - Estados Unidos da América. 

Este evento mostra algumas das novidades das tecnologias Microsoft assim como o que podemos esperar em termos de futuro.

Os vídeos estão disponíveis para visualizar/descarregar em http://channel9.msdn.com/Events/Build/2014

Não percam!

Operador Like

Este poderá parecer um artigo bastante simples sobre Visual Basic e até é na verdade, mas a realidade é que muito programadores ou aspirantes a programadores de Visual Basic não utilizam determinadas funcionalidades, acredito que por desconhecimento, que podem simplificar bastante o código.

O operador Like não está disponível no C# e pode ser substituído pela utilização de Expressões Regulares (Regular Expressions). No entanto, embora as expressões regulares sejam muito mais poderosas e versáteis, pequenas validações podem ser feitas mais facilmente usando este operador.

O operado Like é um dos operadores de comparação disponíveis no Visual Basic assim como o = (igual), <= (menor ou igual), >= (maior ou igual), <> (diferente), Is e IsNot. Os operadores de comparação, como deve ser do vosso conhecimento, devolvem um resultado booleano (true ou false).

resultado = texto like mascara

O seguinte exemplo mostra a utilização do operador Like:

Dim local As String = "Lisboa"
Dim resultado As Boolean = local Like "Lisboa"
' Resultado: resultado = True

O resultado da expressão indicada (local Like “Lisboa”) é True.

É um exemplo bastante simples e que até poderia ser utilizado o operador = (igual) pois está a validar se uma string é igual a outra string, mas a vantagem de utilizarmos o operador Like é que nos permite também utilizar wildcards para a mascara de validação.

Existem três wildcards que podemos utilizar:

  • “*” – Substitui um grupo de caracteres
  • “?” – Substitui um caractere
  • “#” – Substitui um dígito

Alguns exemplos utilizando o wildcard asterisco (*) e respectivos resultados:

Dim word As String = "Revista Programar"

Console.WriteLine(word Like "*Programar")
' Resultado: True

Console.WriteLine(word Like "*ista*")
' Resultado: True

Console.WriteLine(word Like "*Revista")
' Resultado: False

Agora usando o wildcard ponto de interrogação (?)
 
Dim word As String = "VB.NET"

Console.WriteLine(word Like "VB.NE?")
' Resultado: True

Console.WriteLine(word Like "VB.?")
' Resultado: False

Console.WriteLine(word Like "VB.???")
' Resultado: True

E finalmente usando o wildcard cardinal (#):
Dim cod As String = "2900-110"

Console.WriteLine(cod Like "2900-11#")
' Resultado: True

Console.WriteLine(cod Like "2900-#")
' Resultado: False

Console.WriteLine(cod Like "2900-###")
' Resultado: True

Um exemplo conjugando vários wildcards, de modo a mostrar uma validação mais complexa poderá ser:

Dim artigo As String = "PT-AB1234"

If artigo Like "*-??####" Then
Console.WriteLine("Artigo válido")
End If

Nesta validação, que nos dá um resultado verdadeiro, estamos a garantir que o artigo inicia por um texto qualquer (*), seguido de um hífen (-), tendo de seguida dois caracteres alfanuméricos (??) e três números (###).

Mas existem ainda mais formas de usar o operador Like. Podemos definir, entre parênteses rectos, que letras são permitidas na substituição ou entre que intervalos são permitidos usar. Podemos também definir múltiplos intervalos entre os parênteses rectos.

É importante ter em atenção a distinção entre maiúsculas e minúsculas e, no caso de intervalos, definir da primeira letra para a última (de acordo com a ordem do abecedário).

Alguns exemplos para que entenda melhor:  

Dim r = "Revista" Like "Revist[aeiou]"
' Resultado: True

Neste caso a última letra da palavra “Revista” está entre as permitidas nesta validação [aeiou], por isso o resultado é verdadeiro.

Dim r = "Revista" Like "[a-z]evista"
' Resultado: False

O resultado é falso pois a primeira letra da palavra “Revista” não está entre as letras a e z pois esta encontra-se em maiúsculas (“R”).

Dim r = "Revista" Like "[RV]evist[a-c]"
' Resultado: True

Neste exemplo o resultado é verdadeiro pois a primeira letra é um “R” ou “V” e a última é um “a”, “b” ou “c”.

Podemos ainda usar da mesma forma, excluindo determinados caracteres, através da indicação de um ponto de exclamação, ou seja:

Dim r = "Revista" Like "Revist[!abc]"
' Resultado: False

Ou seja, nesta validação estamos a verificar se a última letra não é um “a”, “b” ou “c” (através de [!abc]), o que torna a expressão falsa pois “Revista” termina em “a”.

Para terminar e para mostrar que podemos usar várias combinações, vamos validar:

  1. Se temos no início da palavra uma letra em minúsculas ou a letra “R” - [a-zR]
  2. Que a segunda letra não é um “a” – [!a]
  3. Que a ultima letra é um “a”, “b” ou “c” – [a-c]

Usamos ainda wildcards para outras validações já referidas anteriormente.

Dim r = "Revista" Like "[a-zR][!a]vis?[a-c]*"
' Resultado: True

Por predefinição o modelo de comparação de strings está definido como binário (Option Compare Binary). Desta forma o intervalo [A-E] valida as letra A, B, C, D e E. Se alterarmos o modelo de comparação para texto (Option Compare Text) então o mesmo intervalo valida maiúsculas e minúsculas.

Option Compare Text

Module Module1

Sub Main()

Dim r = "ÀeIÓu" Like "àeióu"
' Resultado: True

End Sub

End Module

O operador Like permite também o seu overloading, à semelhança de outros operadores, alterando desta forma o seu comportamento.

Conclusão

O operador Like é um operador de comparação que permite validar expressões utilizando mascaras, um pouco à semelhança das Regular Expressions, embora muito mais limitado. No entanto, para muitas validações, pode ser uma opção bastante válida e simples de implementar.

Este artigo, entre muitos outros, está disponível na Revista PROGRAMAR, Edição 40 de Abril de 2013


Revista PROGRAMAR Edição 40 - Abril de 2013

Imagem Colocada
(clica para download)

Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote emhttp://tiny.cc/ProgramarED40_V

Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Estruturas vs Objetos de Rita Peres. Nesta 40ª edição pode ainda encontrar os seguintes artigos:

  • Lua - Linguagem de Programação (Augusto Manzano)
  • Introdução à Windows Workflow Foundation (Fábio Domingos)
  • P vs NP (Miguel Araújo)
  • C# - Trazendo Async E Await ao Serviço de Contactos do Windows Phone (Paulo Morgado)
  • Visual(not)Basic - Operador Like (Jorge Paulino)
  • Core Dump - A documentação é algo imprescindível (Fernando Martins)
  • II Mega Mostra IPVC
  • Jquery: A sua biblioteca de Javascript (Bruno Almeida)
  • Mathlab Curso Completo (Nuno Santos)
  • Desenvolvimento de Aplicações em PHP (António Santos)
  • NetPonto - Página avançada “sobre” para aplicações Windows Phone (Sara Silva)
  • Raspberry Pi - Pequeno mas grande (Rita Peres)
  • SEO - Keywords Parte I (Miguel Lobato)
  • Crianças Digitais (Sara Santos)
  • Entrevista a Rui Guimarães
  • Projecto em Destaque na Comunidade Portugal-a-Programar: Sueca Online

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico