Se você quiser saber se um objeto é de um tipo especial, escreva o seguinte código:
Se TypeOf obj for ListItem então ...
Se você deseja obter o nome de um tipo de objeto, use:
MsgBox "O item é um " & TypeName(obj)
Controle loops longosQuando o programa fica preso em um loop longo, você não pode clicar em nenhum botão ou tecla de comando. Isso é muito difícil de ser controlado pelos usuários. Talvez o usuário não queira mais executar o loop e saia clicando no botão Cancelar? Como resolver este problema? A resposta é: use o comando DoEvents! Ou seja, execute o comando DoEvents no início do loop, como no código a seguir:
Dim i enquanto
Para i = 1 a 1.000.000
DoEvents
...
Em seguida eu
Na verdade, o comando DoEvents não precisa ser colocado na linha 1, ele pode ser colocado em qualquer lugar do loop. Ao fazer isso, outras partes do programa, como um botão de comando que encerra o loop, terão outra chance de aceitar eventos de clique.
Faça loops longos rodarem mais rápidoDescobri que, em geral, é melhor usar a função API GetInputState para verificar o valor da fila de entrada do programa. Não sei por que a instrução If faz o código rodar mais rápido, mas na verdade funciona muito bem.
Portanto, a seguinte linha de código pode ser
DoEvents
Substitua por
Se GetInputState() então DoEvents
Experimente!
Na verdade, a razão para isso é: a instrução DoEvents permite que qualquer aplicativo execute eventos relacionados, não apenas o seu próprio programa. Depois de adicionar o julgamento GetInputState, você só poderá aceitar ações de eventos do seu próprio programa!
Torne o Select Case mais fácilVejamos o seguinte exemplo: construção de uma string a partir do clique do usuário em diferentes combinações de tags:
lbl(0) = "Olá"
lbl(1) = "Eu comento: m "
lbl(2) = "Feliz"
lbl(3) = "Triste"
...
sub lbl_click (índice como número inteiro)
string$ = string$+lbl(index).caption
Então, você tem que escrever uma série de instruções select case para analisar esta string...
selecione a string do caso$
case "Olá, comento: estou feliz"
faça alguma coisa
case "Olá, comento: m"
isso seria um erro...
caso outro
faça outra coisa
final selecionar
Como você pode ver, isso seria muito complexo, especialmente se houver muitas tags e forem necessárias verificações de legalidade para operações de mesclagem.
Para resolver esse problema, criei um array com o mesmo comprimento do número de tags:
arraylbl(n) como número inteiro
O valor inicial do array é 1, e então o valor de cada item é igual ao valor anterior multiplicado por 2 (valor*2), assim: 1 2 4 8 16 32 64... Desta forma, o combinação de cada par de rótulos será Outro valor único"
lbl(0) + lbl(1) = 1 + 2 = 3
lbl(0) + lbl(1) + lbl(4) = 1 + 2 + 16 = 19
Agora, quando um rótulo é clicado, seu valor lblarray() correspondente é adicionado à variável. Dessa forma, com base em alguns números, você pode simplesmente escrever uma instrução select case:
selecione o caso IsLegal
caso 3
Nota: a string era válida
ligue para mercadorias
caso 19
Nota: a string era válida
ligue para mercadorias
caseelse
Nota: inválido
ligue para nada de bom
final selecionar
Haha, às vezes, digitalizar personagens pode ter efeitos inesperadamente bons!