Ir ao conteúdo

Excel Localizar valor e contar linhas (excel - vba)


Ir à solução Resolvido por Márcio Rodrigues,

Posts recomendados

Postado

Olá. Preciso localizar em uma coluna da planilha a data de um textbox, e então contar as linhas, para servir de referência para 'linha' na hora de lançar os dados do formulário para a planilha.

Alguém sabe me dizer como posso escrever isso?

Postado

@AfonsoMira
 

Private Sub CommandButton1_Click()

If ComboBox1.Value = "" Then
    MsgBox "Selecione o colaborador", vbInformation, "Ítem obrigatório"
    Exit Sub
End If

If TextBox8.Value = "" Then
    MsgBox "Selecione a data", vbInformation, "Ítem obrigatório"
    Exit Sub
End If

Dim PLAN As String
PLAN = UserForm1.ComboBox1.Text

dia = UserForm1.TextBox8.Text
Worksheets(PLAN).Activate

linha = Cells.Find(dia).Row

ActiveSheet.Cells(linha, 7) = UserForm1.TextBox1.Text
ActiveSheet.Cells(linha, 8) = UserForm1.TextBox2.Text
ActiveSheet.Cells(linha, 9) = UserForm1.TextBox3.Text
ActiveSheet.Cells(linha, 10) = UserForm1.TextBox4.Text
ActiveSheet.Cells(linha, 11) = UserForm1.TextBox5.Text
ActiveSheet.Cells(linha, 12) = UserForm1.TextBox6.Text

If CheckBox1.Value = True Then
ActiveSheet.Cells(linha, 6) = "X"
End If

If CheckBox2.Value = True Then
ActiveSheet.Cells(linha, 5) = "X"
End If
                                                
UserForm1.TextBox1.Value = Empty
UserForm1.TextBox2.Value = Empty
UserForm1.TextBox3.Value = Empty
UserForm1.TextBox4.Value = Empty
UserForm1.TextBox5.Value = Empty
UserForm1.TextBox6.Value = Empty
UserForm1.CheckBox1.Value = False
UserForm1.CheckBox2.Value = False
                        
MsgBox ("Dados salvos na planilha com sucesso"), vbInformation, "Sucesso"
                                  
End Sub

 

Dá erro na parte: linha = Cells.Find(dia).Row

  • Solução
Postado

Olá Jefferson TS

 

Altere esta parte do código e veja se resolve:

Dim PLAN As String
PLAN = UserForm1.ComboBox1.Text

'fonte https://docs.microsoft.com/pt-br/office/vba/api/excel.range.find

dia = CDate(UserForm1.TextBox8.Text) 'formatar para data
Worksheets(PLAN).Activate

'linha = Cells.Find(dia).Row
'
'ActiveSheet.Cells(linha, 7) = UserForm1.TextBox1.Text
'ActiveSheet.Cells(linha, 8) = UserForm1.TextBox2.Text
'ActiveSheet.Cells(linha, 9) = UserForm1.TextBox3.Text
'ActiveSheet.Cells(linha, 10) = UserForm1.TextBox4.Text
'ActiveSheet.Cells(linha, 11) = UserForm1.TextBox5.Text
'ActiveSheet.Cells(linha, 12) = UserForm1.TextBox6.Text

Dim rgn As Range
    
    With Worksheets(PLAN).Range("G:G")
        
        Set rgn = .Find(dia, LookIn:=xlValues)
        
        If Not rgn Is Nothing Then
            
            linha = rgn.Row
            
            Do
                
                ActiveSheet.Cells(linha, 7) = UserForm1.TextBox1.Text
                ActiveSheet.Cells(linha, 8) = UserForm1.TextBox2.Text
                ActiveSheet.Cells(linha, 9) = UserForm1.TextBox3.Text
                ActiveSheet.Cells(linha, 10) = UserForm1.TextBox4.Text
                ActiveSheet.Cells(linha, 11) = UserForm1.TextBox5.Text
                ActiveSheet.Cells(linha, 12) = UserForm1.TextBox6.Text
                
                Set rgn = .FindNext(rgn)
            
            Loop While Not rgn Is Nothing
        
        End If
    
    End With

 

If CheckBox1.Value = True Then
ActiveSheet.Cells(linha, 6) = "X"
End If

 

Veja se é por aí......

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...