
Como conto o número de células selecionadas, independentemente do conteúdo da célula?
Existem dois casos de uso. Preciso do caso de uso 2 agora:
- Quando faço uma ou várias seleções, quero saber quantas células,
- Quero selecionar exatamente N células usando seleções múltiplas. Continuo fazendo e redimensionando seleções até que o número (que deveria estar em algum lugar na tela) chegue a N
Para o número 1, tenho uma solução alternativa: selecione uma única célula contendo texto, copie (para que tenha uma borda animada), faça suas seleções, pressione colar e leia a contagem na barra de status.
Para o número 2, não conheço uma solução alternativa que não envolva repetir a solução alternativa número 1 dezenas de vezes e, em seguida, pressionar desfazer.
Responder1
Para abordar o ponto 1, você pode usar este VBa. O problema é que você não explica como quer ver esse detalhe!? Então eu adicionei como uma caixa de mensagens.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim totalCells As Long
totalCells = Selection.Cells.Count
MsgBox (totalCells)
End Sub
Adicionei o VBa à Plan1. Veja tambémComo adiciono VBA no MS Office?
Apenas não selecione todas as células, pois isso ocorrerá por meio de uma exceção de estouro
O problema é que o pop-up ocorrerá sempre, sugiro que você substitua
Subplanilha privada_SelectionChange (ByVal Target As Range)
MsgBox (totalCells)
com
Range("M1").Value = totalCells ' CHANGE THE RANGE TO THE CELL YOU WANT
Responder2
A única maneira que encontrei de fazer o que você deseja seria com o VBA.
Se você quisesse uma função para colocar isso em uma célula - algo assim funcionaria:
Public Function cellcount()
Application.Volatile
cellcount = Selection.Cells.count
End Function
Você pode executar novamente a função pressionando F9 para obter a resposta após cada alteração de seleção.
Responder3
Muito obrigado a todos. Suas informações acima podem ter alguns anos, mas são exatamente o que eu precisava hoje. Caso isso gere ideias para outra pessoa, veja como ajustei o acima para minhas necessidades. (Nosso custo não é na verdade US$ 2/hora, é claro. Mas essa é a ideia.) Obrigado!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const HOURS As Integer = 10 ' hours per cell
Const COST As Integer = 2 * HOURS ' dollars per cell
Const SPACER As String = " "
Dim numCells As Long
numCells = Selection.Cells.Count
If numCells < 2 Then
Application.StatusBar = False
Else
On Error Resume Next ' in case the selection is so large it causes an overflow error
Application.StatusBar = "Cells: " & numCells _
& SPACER & "Hours: " & (numCells * HOURS) _
& SPACER & "Cost: " & FormatCurrency(numCells * COST, 0)
End If
End Sub