Usuário com melhor resposta
chamando uma Function, e que volte/return o valor para a sub que chamou.

Pergunta
-
Sub msgUltimaLinha() Dim uLinha As Integer Call ultimaLinha MsgBox uLinha End Sub Public Function ultimaLinha() Dim uLinha As Integer uLinha = Cells(Rows.Count, 1).End(xlUp).Row End Sub
Ai no caso a Function ultimaLinha obtem um valor da ultima célula e armazena em uLinha, e quando voltar para a sub msgUltimaLinha deveria o valor estar ali. Pela janela de variáveis locais vejo que dentro de msgUltimaLinha a uLinha esta sem valor.
Acredito que seja algum coisa com variável local ou global, mas tentei usar Return e não é possível. (parece que documentação esta desatualizada, pois leio por ai exemplos que não define tipo das variáveis e usa return e funciona, mas aqui tenho sempre que definir variáveis se não tenho mensagem de erro avisando que nao foi definida)
Uso o office 365 Personal
- Editado Fernando Padilha Avena domingo, 15 de outubro de 2017 18:14
Respostas
-
Option Explicit Sub msgUltimaLinha() Dim uLinha As Long uLinha = ultimaLinha ' Call ultimaLinha MsgBox uLinha End Sub Public Function ultimaLinha() As Long ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row End Function
Anderson Diniz
- Sugerido como Resposta AndersonFDiniz2 domingo, 15 de outubro de 2017 18:15
- Editado AndersonFDiniz2 domingo, 15 de outubro de 2017 18:29
- Marcado como Resposta Fernando Padilha Avena domingo, 15 de outubro de 2017 18:44
Todas as Respostas
-
Option Explicit Sub msgUltimaLinha() Dim uLinha As Long uLinha = ultimaLinha ' Call ultimaLinha MsgBox uLinha End Sub Public Function ultimaLinha() As Long ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row End Function
Anderson Diniz
- Sugerido como Resposta AndersonFDiniz2 domingo, 15 de outubro de 2017 18:15
- Editado AndersonFDiniz2 domingo, 15 de outubro de 2017 18:29
- Marcado como Resposta Fernando Padilha Avena domingo, 15 de outubro de 2017 18:44
-
-
Option Explicit Public uLinha As Integer Sub msgUltimaLinha() '' Dim uLinha As Integer Call ultimaLinha MsgBox uLinha End Sub Sub ultimaLinha() '' Dim uLinha As Integer uLinha = Cells(Rows.Count, 1).End(xlUp).Row End Sub
Ou
Function ultimaLinha() '' Dim uLinha As Integer uLinha = Cells(Rows.Count, 1).End(xlUp).Row End Function
Mas acredito que funciona pois deixei a variável uLinha Globalmente publica.
Para ter uLinha, podendo ser chamada tipo um função. uLinha() - eu precisaria criar ela como uma Public Shared Function uLinha() - tendo um Return do numero de linhas encontrado?
-
-
Option Explicit Sub msgUltimaLinha() Dim uLinha As Long uLinha = ultimaLinha ' Call ultimaLinha MsgBox uLinha End Sub Public Function ultimaLinha() As Long ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row End Function
Se usar
uLinha = ultimaLinha
uLinha = ultimaLinha()
Ambas funciona, mas queria que fosse sempre chamado
uLinha = ultimaLinha()
Quando não precisa passar argumentos, pois quando precisa passar argumentos vai ser preciso o uso de ()
- Editado Fernando Padilha Avena domingo, 15 de outubro de 2017 18:51
-