Notifications
Clear all

Mostrar o resultado na celula

11 Posts
3 Usuários
0 Reactions
1,575 Visualizações
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa noite
Como mostrar o resultado direto na célula e não "MsgBox (CStr(cores.Count) & " Bolinhas")"

Sub Contar()
Dim cores As Collection
Set cores = CountColors(Range("P4:P43"), 6)
MsgBox (CStr(cores.Count) & " Bolinhas")
Dim i As Variant
For Each i In cores
Next
Dim idx As Integer
For idx = 6 To cores.Count
Next
End Sub

Grato

 
Postado : 07/02/2014 7:01 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

creio que trocand a linha:

MsgBox (CStr(cores.Count) & " Bolinhas")

por essa:

Range("A1") = CStr(cores.Count) & " Bolinhas"

 
Postado : 07/02/2014 8:49 pm
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Bacana gtsalikis, mas tem um porém: Para mostrar o valor na célula é preciso clicar no botão. Para atualizar o valor da célula, um Clear para limpar e depois clicar de novo no botão. Não dá para implementar de modo automático (como acontece quando se usa formulas) mostra o valor e vai atualizando o mesmo sem precisar clicar no botão. :D

 
Postado : 08/02/2014 9:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendo porque ja não colocam as duvidas por completo, a questão era : "Como mostrar o resultado direto na célula e não "MsgBox (CStr(cores.Count) & " Bolinhas")""

O nosso colega respondeu a contento, e depois diz que não é bem isto, antes de postar pense bem no que pretende e formule a questão correta evitando varios posts do tipo "porem, tem mais alguma coisa .....", o correto deste post, seria como transformar uma Rotina (SUB em uma Function, assim podemos utilzar a mesma como Função sem precisar utilizar Botões.

De uma olhada no link abaixo, explica a diferença e exemplifica como efetuar esta adaptação, de SUB para FUNCTION.
VBA – As diferenças entre Sub e Function
http://www.tomasvasquez.com.br/blog/mic ... e-function

[]s

 
Postado : 08/02/2014 10:05 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Mauro, não quero polemizar, mas o pedido era "Como mostrar o resultado direto na célula e não "MsgBox (CStr(cores.Count) & " Bolinhas")", logo imaginei que o resultado seria como acontece quando se usa formulas. Não possuo conhecimentos de VBA o suficiente para distinguir entre o que é "SUB/FUNCTION". Logo vamos aprendendo na prática de acordo com o que postamos, mas te garanto que assim que aprendermos mais, nossos questionamentos ficarão mais precisos.
Grato pela indicação do link, vamos aprender se Deus quiser :D

 
Postado : 08/02/2014 11:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Patropi, mais uma vez peço desculpas por Destrancar o Tópico, mas achei pertinente colocar a solução, uma vez que o autor do tópico deu como Resolvido e achei que ficou vag, pensando em outros usuários que venham pesquisar pelo mesmo assunto.
Peço a gentileza de aguardar um tempinho antes de Trancar novamente este tópico, que poderemos ter mais algumas sugestões ou o Dimorais dizer que agora podemos finaliza-lo, grato.

Dimorais, longe de querer polemizar, estamos em um Forum e devemos debater, as vezes somos um pouco chato devido a termos a incubencia de Moderador, na verdade existem Tópicos que da vontade até de apagar, mas diferentemente de outros Foruns estamos sendo bem benevolentes.
Quanto a questão, como pode ver pela resposta do colega gtsalikis eu tambem entendi desta forma, na rotina postada em vez de dar o resultado em MsgBox jogar o mesmo direto para uma celula, se tivesse colocado, ajustar a rotina para ser executada tipo uma Função do Excel o entendimento seria outro, mas finalizando, espero que não tenha me interpretado erroneamente, estou sempre a disposição para trocarmos experiencias e conhecimentos, pode até enviar via MP, que na medida do possivel estarei respondendo.

Voltando a questão, acredito que tirou esta rotina do link abaixo, pois é bem parecida :
Criar função contar celulas coloridas e devolver quantidade dessas celulas e ...
http://www.portugal-a-programar.pt/topi ... celulas-e/

Então adaptando a Function CountColors, que é a que nos interessa, a mesma ficaria assim :

Function CountColors(rng As Range, color As Integer)
    Dim sResultado

    Dim rCell As Range

    Application.Volatile (True)
    
    ' Ciclo que irá percorrer todas as células definidas
    For Each rCell In rng
      
      ' Caso a cor interior (background) seja a escolhida
      If rCell.Interior.ColorIndex = color Then
           ' Conta e Armazena os resultados
          sResultado = WorksheetFunction.Count(color) + sResultado
      End If
      
    Next
    
    'Coloca o Resultado na Celula
    CountColors = sResultado & " Bolinhas"

End Function

Faça os testes e qq duvida retorne.

[]s

 
Postado : 08/02/2014 8:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia Mauro

O objetivo de trancarmos o tópico, é de evitarmos que outros usuários aproveitem o mesmo tópico, para postarem suas dúvidas.
Quando for necessário alguma complementação na resposta do tópico por algum moderador, basta apenas excluir a minha mensagem de "Tópico Resolvido!", desmarcar a opção de RESOLVIDO, clicando no V de RESOLVIDO, que estará vermelho.

Quando o tópico estiver novamente resolvido, ao marcar com o V de RESOLVIDO, eu posto a mensgem e tranco o tópico novamente.

Esclareço aos demais usuários, que quando a sua dúvida for parecida com a de algum tópico, em vez de aproveitar o mesmo tópico, copie o endereço do tópico e cole o link no seu novo tópico.
Só o autor do tópico pode reabrir o tópico e desde que o assunto da dúvida, seja o mesmo.

Um abraço.

 
Postado : 09/02/2014 6:36 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Bom dia
A macro foi retirada de http://www.portugal-a-programar.pt/topi ... celulas-e/ e estou tentando utilizá-la em uma aplicação própria. Mais uma vez grato pela colaboração. :D

 
Postado : 09/02/2014 7:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia
A macro foi retirada de http://www.portugal-a-programar.pt/topi ... celulas-e/ e estou tentando utilizá-la em uma aplicação própria. Mais uma vez grato pela colaboração. :D

Dimorais, agora fiquei sem compreender qual adaptação que pretende quando diz "estou tentando utilizá-la em uma aplicação própria", se no forum que passou já está como resolvido.

Veja, o link que passei é do mesmo Forum de Portugal ( http://www.portugal-a-programar.pt/ ), o que eu não havia visto é que a solicitante "susanajm" havia aberto dois Tópicos, um em :
"17 de Dezembro de 2009" que é o que postei " com o Assunto :
Criar função contar celulas coloridas e devolver quantidade dessas celulas e ...
http://www.portugal-a-programar.pt/topi ... celulas-e/

e outro em : "21 de Janeiro de 2010", assunto :
"Criar função que devolva conteudo celula se outra celula for de uma certa cor"
http://www.portugal-a-programar.pt/topi ... ountcolors

No primeiro ela não deu retorno se atendeu, e no segundo diz que foi Resolvido.

Quando eu disse que não entendi é porque nos dois o assunto "Criar Função.." e principalmente no 2° tópico está a Function que quer, alias duas uma retornando a Qde de celulas pela cor e outra a Qde mais o conteudo de cada uma.

Sendo assim, por gentileza, detalhe o que pretende, ou, se já foi solucionado, colocar o Tópico como RESOLVIDO.

[]s

 
Postado : 09/02/2014 8:42 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa tarde
Mauro, estava "tentando" com a macro postada inicialmente, usando Sub, mas agora mudei, e estou usando essa ultima: "Function CountColors(rng As Range, color As Integer)" e a questão foi prontamente resolvida. Grato pela postagem da mesma. :D

 
Postado : 09/02/2014 9:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 09/02/2014 12:18 pm