Jogando PacMan e Star Wars no Excel!

Querendo matar a saudade destes clássicos do Atari?

Pois é, o autor do site Italiano http://www.excelling.it/ conseguiu reconstruir estes jogos usando o Microsoft Excel com várias (várias mesmo) pitadas de VBA. O que mais me impressionou foi que, ao invés usar Userforms com chamadas intensas e API, muito comum quando se faz este tipo de aplicação, ele usou as células de uma planilha para desenhar todo o jogo.

Infelizmente são só duas opções, mas foi um golpe de mestre! Vale a pena conferir.

 

Pac Man Excel
Pac Man Excel

PacMan

 

Star Wars

Ótimo para curtir e matar aquele tempinho livre. Serve também como opção para quem cansou de jogar Paciência. 😀

Só não vale colocar a culpa em mim ou no autor do site caso o seu chefe pegue você com isso ok?

Um grande abraço

Planilhas inúteis, porém muito bacanas!

O site http://www.ocio2007.com.br reúne algumas obras em Microsoft Excel em um contexto um pouco “diferente”.

Ao invés de aplicar o Excel a negócios como é de costume, o pessoal resolveu usar a ferramenta para produzir algumas aplicações digamos, inúteis. Mas ser inútil é uma maneira de ver certo?

Os downloads disponíveis para exemplo vão de tabelas para controlar campeonatos de futebol até calculadores de feijoada.. ?!?!?!? Tem joguinhos simples e Puzzles também. Até mesmo um concurso foi lançado para promover mais inutilidades.

Coisa de louco, mas vale muito a pena dar uma olhada.

Bom divertimento!

Tomás Vásquez
http://www.tomasvasquez.com.br

Cuidado com Userform.Hide!

Vejo muitos exemplos de código em VBA que no uso de UserForms, usam o método Hide fechá-lo.

É bom tomar cuidado com o método Hide. Ele não fecha o Form, apenas esconde como o próprio nome diz.

O Unload definitivamente o tira da memória. Para fazer um teste, crie um form vazio, coloque nele um textbox e dois botões. Num deles coloque o Unload Me e no outro o UserForm.Hide.

Crie uma macro para chamar o Form com Userform.Show. Execute esta macro, coloque algum texto no textbox e clique no botão que executa o Hide. Execute a macro para chamar o Form de novo. Veja que o texto digitado continua lá. Agora faça o mesmo teste, mas agora clicando no botão que executa o Unload Me. Veja que a caixa de texto volta vazia.

O que o Hide faz é somente ocultar o Form. Se essa não for a intenção, é bom tomar cuidado com seu uso.

Abraços

Tomás Vásquez
http://www.tomasvasquez.com.br

Desabilitando o botão fechar de um Userform no VBA

Uma necessidade comum em alguns sistemas VBA é evitar que o usuário feche o form involuntariamente. A forma mais comum é captura o evento Query_Close e alterar o valor do parâmetro Cancel.

Porém algumas vezes é necessário que o botão de fechamento nem apareça para alterar. Para isso, basta colocar o código abaixo em um UserForm VBA. Os eventos Initialize e Query_Close já criados tratam de remover o botão do UserForm.

Private Declare Function FindWindowA Lib "USER32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "USER32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "USER32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
Private Sub UserForm_Initialize()
    Dim hwnd As Long
    hwnd = FindWindowA(vbNullString, Me.Caption)
    SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim hwnd As Long
    hwnd = FindWindowA(vbNullString, Me.Caption)
    SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000
End Sub

É bom atentar que desaparecer com o botão não desativa o uso do atalho Alt+F4 que fecha a janela.

Bom proveito!

Tecnologia e Programação