Notifications
Clear all

Valor ultima linha

9 Posts
4 Usuários
0 Reactions
1,539 Visualizações
(@teleguiado)
Posts: 142
Estimable Member
Topic starter
 

Boa tarde!!

Preciso de uma ajuda dos amigos com relação ao código abaixo, que estou tentando criar, preciso verificar qual o valor da ultima linha de uma tabela se ela for um valor x faça isso ou se for y faça aquilo.
Não consegui achar aqui no forum em código vba encontrei por formula do excel e não é o meu caso pois preciso fazer por vba.

Sub usuario()
Dim Ultimalinha1
Sheets("Controle de Acesso").Visible = True
On Error GoTo Sair

Sheets("Controle de Acesso").Select
Ultimalinha1 = Sheets("Controle de Acesso").Cells(Cells.Rows.Count, "a").End(xlUp).Row
Ultimalinha1.Select

If ActiveCell.Value = usuario1 Then
    Sheets("plan1").Select
    ActiveSheet.Shapes.Range(Array("Imagem 1")).Select
    Selection.Delete
Else
    Sheets("plan1").Select
    ActiveSheet.Shapes.Range(Array("Imagem 2")).Select
    Selection.Delete

End If
Sair:
'Sheets("Controle de Acesso").Visible = False
End Sub

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 06/02/2017 4:11 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite,

Notei que nesse seu IF o usuario1 não foi definido. usuario1 é uma variável?

att,

 
Postado : 06/02/2017 5:24 pm
(@gabrsoares)
Posts: 7
Active Member
 

Boa noite, tudo bom?

Notei que além de não preencher a variável "usuario1" você está usando a UltimaLinha1 como uma referencia a célula quando na verdade aquele "End(xlUp).Row" retornar apena o valor numérico referente à linha (1 para a linha 1, 2 para a linha 2 etc). Também vi que você seleciona todos os objetos, o que não é necessário. Segue abaixo uma sugestão de código:

Sub usuario()
Dim Ultimalinha1 As Long
Dim wsControle As Excel.Worksheet: Set wsControle = ThisWorkbook.Sheets("Controle de Acesso")
Dim usuario1 As String: usuario1 = "valor" 'insira aqui o valor que você deseja comparar

'1 - Ativar aba
wsControle.Activate

On Error GoTo Sair

'**Não é necessário selecionar
'Sheets("Controle de Acesso").Select

'2 - Verificar número da última linha
Ultimalinha1 = wsControle.Cells(wsControle.Rows.Count, "a").End(xlUp).Row

'3 - Realizar verificação
If wsControle.Cells(Ultimalinha1, "a").Value = usuario1 Then
    Sheets("plan1").Shapes("Imagem 1").Delete
Else
    Sheets("plan1").Shapes("Imagem 2").Delete
End If

Sair:
'Sheets("Controle de Acesso").Visible = False
End Sub
 
Postado : 06/02/2017 5:38 pm
(@teleguiado)
Posts: 142
Estimable Member
Topic starter
 

GabrSoares, funcionou, porem resolvi utilizar botões no lugar da ultima linha.

Sub usuario()
Dim wsControle As Excel.Worksheet: Set wsControle = ThisWorkbook.Sheets("plan1")

'1 - Ativar aba
wsControle.Activate

On Error GoTo Sair

'2 - Realizar verificação

If MainForm.usuario1Button.Value = True Then
    Sheets("plan1").Shapes("Imagem 1").Delete
    Sheets("plan1").Shapes.Range(Array("Imagem 2")).Select
    Selection.ShapeRange.IncrementLeft -244.4118110236
End If

If MainForm.usuario2Button.Value = True Then
 
    Sheets("plan1").Shapes("Imagem 2").Delete

End If

Sair:

End Sub

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 07/02/2017 6:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde, teleguiado, reabri e desresolvi seu tópico! *(poderes de moderador)

Chegando em casa dou uma olhada!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/03/2017 3:40 pm
(@teleguiado)
Posts: 142
Estimable Member
Topic starter
 

Obrigado Fernando.

Neste post tem a planilha completa.

http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=23781

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 27/03/2017 3:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Encontrei uma rotina em que era possível e fica fácil vc identificar, como evitar utilizar o ".Select"

Option Explicit

Sub Retornar_Navegador()

'Grupo1
    With Sheets("Resumo")
        If .Cells(194, 5).Value > "0" Then
            MainForm.CheckBoxGrupo1.Value = True
            MainForm.CheckBoxGrupo1.Visible = True
        Else
            MainForm.CheckBoxGrupo1.Value = False
            MainForm.CheckBoxGrupo1.Visible = False
        End If

        'Grupo2

        If .Cells(195, 5).Value > "0" Then
            MainForm.CheckBoxGrupo2.Value = True
            MainForm.CheckBoxGrupo2.Visible = True
        Else
            MainForm.CheckBoxGrupo2.Value = False
            MainForm.CheckBoxGrupo2.Visible = False
        End If

        'Grupo3
        If .Cells(196, 5).Value > "0" Then
            MainForm.CheckBoxGrupo3.Value = True
            MainForm.CheckBoxGrupo3.Visible = True
        Else
            MainForm.CheckBoxGrupo3.Value = False
            MainForm.CheckBoxGrupo3.Visible = False
        End If

        'Grupo4
        If .Cells(197, 5).Value > "0" Then
            MainForm.CheckBoxGrupo4.Value = True
            MainForm.CheckBoxGrupo4.Visible = True
        Else
            MainForm.CheckBoxGrupo4.Value = False
            MainForm.CheckBoxGrupo4.Visible = False
        End If

        'Grupo4A
        If .Cells(198, 5).Value > "0" Then
            MainForm.CheckBoxGrupo4A.Value = True
            MainForm.CheckBoxGrupo4A.Visible = True
        Else
            MainForm.CheckBoxGrupo4A.Value = False
            MainForm.CheckBoxGrupo4A.Visible = False
        End If

        'Grupo5
        If .Cells(199, 5).Value > "0" Then
            MainForm.CheckBoxGrupo5.Value = True
            MainForm.CheckBoxGrupo5.Visible = True
        Else
            MainForm.CheckBoxGrupo5.Value = False
            MainForm.CheckBoxGrupo5.Visible = False
        End If

        'Grupo6
        If .Cells(200, 5).Value > "0" Then
            MainForm.CheckBoxGrupo6.Value = True
            MainForm.CheckBoxGrupo6.Visible = True
        Else
            MainForm.CheckBoxGrupo6.Value = False
            MainForm.CheckBoxGrupo6.Visible = False
        End If

        'Grupo7
        If .Cells(201, 5).Value > "0" Then
            MainForm.CheckBoxGrupo7.Value = True
            MainForm.CheckBoxGrupo7.Visible = True
        Else
            MainForm.CheckBoxGrupo7.Value = False
            MainForm.CheckBoxGrupo7.Visible = False
        End If

        'Grupo8

        If .Cells(202, 5).Value > "0" Then
            MainForm.CheckBoxGrupo8.Value = True
            MainForm.CheckBoxGrupo8.Visible = True
        Else
            MainForm.CheckBoxGrupo8.Value = False
            MainForm.CheckBoxGrupo8.Visible = False
        End If
    End With


End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/03/2017 10:33 pm
(@teleguiado)
Posts: 142
Estimable Member
Topic starter
 

Bom dia!!

Fernando, tem um pequeno problema que esta acontecendo quando fiz essa alteração. As Checkbox não atualiza toda vez que clico em algum grupo. So atualiza quando clico no Resumo.

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 28/03/2017 7:33 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu só enviei um exemplo, de todo o seu código, escolhi a rotina mais simples, Retornar_Navegador....
Esta funciona. Se há caixas que não estão mudando conforme vc previa, não é por causa da alteração, deve/pode haver outro motivo...
O complicado é que não tenho como verificar agora...

mas é complicado, vc me envia um arquivo enorme, com um código enorme e fala:
"como faz pra referenciar uma panilha oculta?"

Preciso que vc me diga qual rotina vc quer melhorar.... E sugiro que crie um novo tópico! melhor... assim cada tópico fica com uma ssunto diferente...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/03/2017 8:01 am