Notifications
Clear all

count+1 sem inutilizar a linha toda

5 Posts
3 Usuários
0 Reactions
822 Visualizações
(@wally)
Posts: 0
New Member
Topic starter
 

Olá Pessoal,
Sou novo aqui no Fórum e tenho uma dúvida. Estou fazendo uma planilha para inscrição em um evento com várias palestras e minincursos para a minha universidade e eu fazendo em vba, e gostaria que a seguinte operação fosse realizada:
em uma única aba a planilha deve armazenar a inscrição de todos as palestras (uma em cada coluna) e para isso usei uma caixa de seleção e um botão para enviar o nome do inscrito para a aba PALESTRAS e utilizei a seguinte fórmula:

Private Sub csinscoeng_Click()
Dim inscoeng As String
inscricoes = Worksheets("PALESTRAS").UsedRange.Rows.Count + 1
Worksheets("PALESTRAS").Select
inscoeng = csinscoeng.Value
If csinscaltd.Value = True Then
Cells(inscricoes, 1) = NOME

bom, até aí, tudo bem, o problema é que quando uma pessoa se inscrever em duas palestras e apenas a célula A2 estiver preenchida, o nome do inscrito na segunda palestra só irá aparecer na célular da terceira linha da segunda coluna( como na figura a seguir):

Ou seja, a fórmula que eu usei inutilizou a linha inteira, uma vez que uma célula foi preenchida. Gostaria de saber como alterar para poder utilizar a célula da mesma linha da coluna posterior.

 
Postado : 14/01/2016 8:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não utilize o UsedRange.
Experimente :
inscricoes =Worksheets("PALESTRAS").Cells(Cells.Rows.Count, "A").End(xlUp).Row ' Altere "A" para a coluna que deseja utilizar

 
Postado : 14/01/2016 9:20 am
(@srobles)
Posts: 0
New Member
 

wally,

Uma opção seria para fazer isso, seria você fazer um Find para verificar se determinado curso já existe na planilha. Ex :

Sub preencher()
    On Error GoTo vErro
    Dim ultimaLinha As Integer
Inicio:
        'Ativa a planilha
        ThisWorkBook.Sheets("PALESTRAS").activate

        'Procura na planilha se o curso já está cadastrado
        Cells.Find(UCase(UserForm1.ComboBox1), ActiveCell, xlValues, xlWhole, xlByColumns, xlNext).Activate
        
            'Conta as linhas usadas na planilha
            For ultimaLinha = 2 To ActiveSheet.UsedRange.Rows.Count
                'seleciona a linha e verifica seu conteúdo
                Cells(ultimaLinha, ActiveCell.Column).Select
                'Se a celula ativa estiver em branco
                If ActiveCell = "" Then
                    'Seleciona a celula, define a ultima linha e sai do laço
                    Cells(ultimaLinha, ActiveCell.Column).Select
                    ultimaLinha = ActiveCell.Row
                    Exit For
                End If
            Next
'Preenche a celula com os valores e sai da sub
Cells(ultimaLinha, ActiveCell.Column) = UCase(UserForm1.TextBox1)
Exit Sub

'Se houver o 91 (valor não localizado), adiciona o novo curso na planilha e no combo, e volta pro inicio
vErro:
If Err = 91 Then
    Cells(1, ActiveSheet.UsedRange.Columns.Count + 1) = UCase(UserForm1.ComboBox1)
    UserForm1.ComboBox1.AddItem UCase(UserForm1.ComboBox1)
    GoTo Inicio
End If

End Sub

Veja se te atende.

Aguardo retorno.

Abs

 
Postado : 14/01/2016 9:28 am
(@wally)
Posts: 0
New Member
Topic starter
 

Srobes,
Apesar de não ter utilizado sua resposta para este problema, consegui usar em outra situação até então sem solução, agradeço o esforço em me ajudar.

Abraços

 
Postado : 15/01/2016 3:41 am
(@wally)
Posts: 0
New Member
Topic starter
 

Não utilize o UsedRange.
Experimente :
inscricoes =Worksheets("PALESTRAS").Cells(Cells.Rows.Count, "A").End(xlUp).Row ' Altere "A" para a coluna que deseja utilizar

Muito obrigado pela ajuda, consegui resolver o problema com a sua resposta.
Abraços

 
Postado : 15/01/2016 3:42 am