Notifications
Clear all

Código VBA: Explicação

24 Posts
4 Usuários
0 Reactions
4,682 Visualizações
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

Olá amigos, boa tarde.

Alguém poderia me explicar o que o seguinte código faz?

Public Sub lsNovoJogo()
   
    lTamPalavra = Len(Range("Plan2!A" & Range("Plan2!B1").Value).Value)
    lfSepararLetras Range("Plan2!A" & Range("Plan2!B1").Value).Value, lPalavra
    lPartes = 1
    lSituacao = 0
    
    Set lsRange = Range("Plan1!E12")
    
    lPalavraAdv = Range("Plan2!A" & Range("Plan2!B1").Value).Value
    
    For i = 1 To 6
        ActiveSheet.Shapes(i).Visible = False
    Next
    
    Range("Plan1!E13:AE13").Value = ""
    
    For i = 1 To lTamPalavra
        lsRange.Offset(1, i - 1) = i
    Next
    
    Range("Plan1!E12:AE12").Value = ""
    
    Range("W3").Value = CStr(lTamPalavra) & " letras."
    
End Sub

Desde já agradeço.

At.te

csfab

 
Postado : 25/09/2012 12:54 pm
(@lovera)
Posts: 90
Estimable Member
 

Vi uma ou outra função de texto.
Coloca o arquivo q fica mais facil de entender.

 
Postado : 25/09/2012 2:12 pm
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

Lovera segue o anexo.

Olha o que queremos é o seguinte.

É um jogo de forca, mas acho interessante um jogo de forca ter dicas quando as palavras são complexas.

Então pensamos em criar um 4 botão onde esse botão (DICA), e quando clico nesse botão, aparece uma msgbox para você escolher o tipo da dica.

Opção 1: texto
Opção 2: Imagem

Se você clicar em texto irá aparecer uma dica em forma de texto referente a Palavra que foi sorteada pelo botão "Novo Jogo".

Se você clicar em cima de imagem, irá aparecer uma caixa com a imagem da palavra que foi sorteada pelo botão "Novo Jogo".

Andei pesquisando e vi que uma forma simples de dar dica por texto é usando a função (PROCV).

Mas para isso tenho que saber como o botão "Novo Jogo" funciona para que eu use o sorteio dele para anexar na função (PROCV).

Agora a parte da imagem, algumas informações que obtive também é possível com o (PROCV).

Aguardo.

At.te

csfab

 
Postado : 26/09/2012 11:26 am
(@lovera)
Posts: 90
Estimable Member
 

Ai truta.

O codigo é bem complexo para mim. O botão novo jogo ativa uma macro que ativa uma série de funções. Eu mesmo vou estudar essa programação porque achei bem interessante.

Mas nem tudo são más noticias.

Consegui achar a variavel que define a palavra e joguei para que ela apareça na plan1 na celula W2. Mas na cor azul sendo assim não fica visivel.

Coloquei na plan 2 na coluna C uns exemplos de dica. Se colocar em outra coluna, não vai funcionar dai me dá um toque se vc quiser trocar de coluna.

No botão dica consegui colocar uma macro para pesquisar na plan 2 e trazer a dica daquela palavra. Para fazer aquela opção de imagem. Você vai colocar imagens para todas as palavras? Se for, me passa as imagens mas acho interessante colocar em uma pasta e cada imagem o nome da palavra, com acento e tudo identico e um tamanho de imagem padrão para todos. Que posso fazer com q abra um formulario chamando a imagem daquela palavra.

Bele?

Segue o arquivo e me dá um joinha!

 
Postado : 26/09/2012 7:43 pm
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

Muito legal Lovera, isso mesmo queremos colocar uma imagem para cada palavra, vou colocar umas imagens aqui ai, mando o arquivo, hoje mais tarde um pouco.

Vlw.

At.te

 
Postado : 27/09/2012 5:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Obs.: Assim como no jogo de química é necessário estabelecer uma rotina para parar o ALEATÓRIOENTRE() na aba dos elementos, para fixar uma única resposta. Esta mesma rotina deve disparar um novo ALEATÓRIOENTRE() quando o botão novo jogo for acionado.

Abs,

 
Postado : 27/09/2012 5:04 am
(@tacito)
Posts: 67
Trusted Member
 

Olá, pessoal!
Eu dei uma modificada na última planilha pra fazer o que o Mandrix falou, ela tá rodando o aleatório somente quando um novo jogo é iniciado. Eu fiz uma modificação no código, ele não tá salvando a palavra em uma célula, assim não há risco de algum dado que estivesse colocado nesta célula, e o código da dica está um pouco simplificado.
Estou no trabalho, e não deu pra testar o programa completo, apenas as partes separadas, por favor verifiquem se está rodando direito, e se está se aproximando do objetivo.

 
Postado : 27/09/2012 8:23 am
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

tacito

Quando clico em novo jogo no arquivo que você postou acontece o seguinte erro:

Erro de tempo de execução '1004'
O método 'Range' do objeto '_Global' falhou
linha = Sheets(2).Range("A:A").SpecialCells(xlCellTypeLastCell).Row
    num = Application.WorksheetFunction.RandBetween(1, linha)
    Names("aleatorio").Value = num
    lTamPalavra = Len(Range("Plan2!A" & Range("aleatorio")).Value) [ERRO]
    lfSepararLetras Range("Plan2!A" & Range("aleatorio")).Value, lPalavra
    lPartes = 1
    lSituacao = 0

At.te

 
Postado : 27/09/2012 8:56 am
(@tacito)
Posts: 67
Trusted Member
 

Desculpe, esqueci de trocar uma parte do comando.

você pode anexar este arquivo que mandei sem o fundo azul na primeira planilha, aí eu consigo abrir aqui, sem o pessoal ficar olhando, se conseguir diminuir o tamanho dos desnho também seria legal.

abraços.

 
Postado : 27/09/2012 9:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tentando Contribuir, o erro dá-se pelo motivo da range nomeada "Aleatorio" não existir no arquivo, altere onde aparece
Range("aleatorio") para : num, que irá rodar numa boa

 
Postado : 27/09/2012 9:22 am
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

tacito,

Segue arquivo sem fundo azul.

At.te

 
Postado : 27/09/2012 10:20 am
(@tacito)
Posts: 67
Trusted Member
 

segue anexo com correção, eu acho que o modo que o reinaldo falou podia resolver, mas como eu não tinha certeza se o valor salvo na variável "num" ia mudar por ser aleatório, e como não posso ficar testando, achei melhor usar outra solução, o código tá com algumas linhas desativadas por dois motivos, o primeiro é que as imagens foram tiradas, aí se deixasse algumas linhas ia dar erro, outro motivo é nas linhas que escrevem o nome sorteado e o número de letras na planilha 1, não sei se é necessário, se for é só tirar o apóstrofe do início da linha.

as letras estão sendo escritas, só não aparecem porque o fundo e as letras são brancos, e os erros estão sendo contados, mas as imagens, até avisa quando perde, só tem que voltar as imagens e tirar os apostrofes das linhas que liberavam ou escondem as figuras.
Fora isso é só fazer alguns testes, e, qualquer dúvida, estamos aí.

 
Postado : 27/09/2012 11:26 am
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

tacito,

Bem eu ativei as imagens, pois, é um jogo de forca e precisamos enforcar as pessoas. (risos)

Assim, como o lovera tinha solicitado passar imagens, para que o mesmo criasse a função para podermos anexar ao jogo.

Bem estamos fazendo isso, pois são 210 imagens então vou demorar um pouco, mas estou fazendo o mais rápido possível.

E surgiu uma idéia, mas pode complicar todo o código.

Vamos lá.

Quando clico em novo jogo, a o jogo é todo reiniciado.

E queríamos ter novos botões, 2 novos a partir do arquivo que irei anexar.

Botão novo1: Dica - Imagem (irá mostrar uma imagem relacionada a palavra sorteada pelo jogo)
Botão novo2: nova palavra (irá sortear sortear uma nova palavra)

Agora o porque disso.

Vamos ter uma pontuação por jogo.

Se você acerta uma palavra, você ganha 15 pontos.
Se você erra uma palavra, você perde 10 pontos.
Se voce clica em dica (botão já existente - créditos Lovera), você perde 5 pontos
Se você clica no botão: dica - imagem, você perde 10 pontos.

Se você chegar a 100 pontos você venceu o jogo, jogando até no máximo 10 palavras.

Se ao terminar as 10 palavras você não conseguiu os 100 pontos você terá perdido o jogo.

Tentei ser o mais claro possível.

At.te

 
Postado : 27/09/2012 1:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Breve comentário: Não me parece lógico para um jogo de forca que as dicas sejam informações sobre as letras que ele terá que preencher. Entendo que outras informações sobre os elementos deveriam constar como dicas pois imagine se falta(m) somente alguma(s) das 4 letras para que o jogador não seja enforcado... Vcs estarão dando as respostas ao jogador.

Pense nisso.

Abs,

 
Postado : 27/09/2012 6:40 pm
(@csfab)
Posts: 31
Eminent Member
Topic starter
 

MANDRIX.xls, sim, claro, concordo plenamente, aquilo foi somente para testes.

Na coluna B, vamos digitar algum texto referente a palavra. E não usar a própria palavra.

At.te

 
Postado : 27/09/2012 7:00 pm
Página 1 / 2