Página 1 de 1

Textbox com rolagem automática

Enviado: Sex Mai 10, 2019 6:32 pm
por Alex Abreu
Boa Noite, Caso tenha um outro tópico relacionado a resolver esta Dúvida peço por gentileza que o Moderador unifique para ajudar a localizar as informações
Vamos ao assunto...
Conforme comentei no video do canal Tomas Vasquez no youtube
Estou desenvolvendo um Sistema de Diárias que mais pessoas irão usar no meu trabalho, então eu criei um Userform de nome Sobre_usm que é algo comum em aplicativos
onde Informa a versão do Aplicativo, builds e Alguns informam até listagem de correções e bugs (uma espécie de diário de bordo contendo datas e o que foi realizado em tal data, etc.).

Pois bem, eu tenho uma Textbox chamada de TRelease com a propriedade Locked Ativada, Multiline Ativada e ScrollBar Vertical acionada
Minha questão é, tem como fazer a barra de rolagem rotacionar automaticamente de baixo pra cima?
eu já cheguei a ver esse efeito de texto rolando sozinho em alguns aplicativos e eu gostaria de fazer esse efeito no meu Userform, porém não faço ideia de como proceder com essa dúvida
Eu até pensei em simular através de comandos sendkeys a seta pra cima, mas não deu o resultado pretendido, alguém sabe me ajudar com essa questão?

Re: Textbox com rolagem automática

Enviado: Sex Mai 10, 2019 11:22 pm
por webmaster
Você quer dizer scrollar até o fim do texto? Seria algo asim?

Código: Selecionar todos

textbox.selstart = len(textbox.Value)

Re: Textbox com rolagem automática

Enviado: Sáb Mai 11, 2019 4:22 pm
por Alex Abreu
webmaster escreveu:
Sex Mai 10, 2019 11:22 pm
Você quer dizer scrollar até o fim do texto? Seria algo asim?

Código: Selecionar todos

textbox.selstart = len(textbox.Value)
Boa Tarde, o efeito que eu busco seria este daqui
ImagemEfeito que eu busco by Alex Abreu, no Flickr

Eu fiz com meu editor de video para ilustrar melhor, o nome desse efeito se chama Scroll Up
É possível fazer isso? se não tiver como fazer no textbox qual objeto VBA aceita esse efeito?

Re: Textbox com rolagem automática

Enviado: Sáb Mai 11, 2019 8:24 pm
por srobles
Alex,

Use o comando enviado pelo amigo Tomás, apenas alterando o valor após o sinal de =, exemplo :

Código: Selecionar todos

TRelease.SelStart = 0
Assim, a primeira linha do controle receberá o foco.

Espero ter ajudado.

Abs

Re: Textbox com rolagem automática

Enviado: Sáb Mai 11, 2019 9:41 pm
por Alex Abreu
srobles escreveu:
Sáb Mai 11, 2019 8:24 pm
Alex,

Use o comando enviado pelo amigo Tomás, apenas alterando o valor após o sinal de =, exemplo :

Código: Selecionar todos

TRelease.SelStart = 0
Assim, a primeira linha do controle receberá o foco.

Espero ter ajudado.

Abs
Não sei se me fiz entender, mas a textbox em questão está com a propriedade Locked ativada, ou seja, ela está travada para digitação, o texto contido nessa textbox vem de uma célula, o que eu quero é que o texto contido nessa textbox se mova automaticamente assim como o efeito no video que mencionei no meu post anterior.
Alex Abreu escreveu:
Sáb Mai 11, 2019 4:22 pm
Boa Tarde, o efeito que eu busco seria este daqui
ImagemEfeito que eu busco by Alex Abreu, no Flickr
Ou seja, é como se automaticamente a textbox fosse clicada e o vba ficasse usando a setinha para baixo de segundo em segundo até o final do texto para que a transição do início ao fim seja completa!
Se isso é possível na textbox ok, caso não seja viável fazer esse efeito demonstrado no video qual objeto vba aceita fazer isso?

Re: Textbox com rolagem automática

Enviado: Sáb Mai 11, 2019 10:07 pm
por srobles
Alex,

Desculpa pelo equivoco amigo. Não havia me atentado ao funcionamento que o controle deve ter.

Como até o momento não precisei desenvolver algo parecido, por hora fico devendo. Vou estudar uma maneira de realizar isso, e tendo algo, retorno.

Abs

Re: Textbox com rolagem automática

Enviado: Sáb Mai 11, 2019 10:21 pm
por Alex Abreu
srobles escreveu:
Sáb Mai 11, 2019 10:07 pm
Alex,

Desculpa pelo equivoco amigo. Não havia me atentado ao funcionamento que o controle deve ter.

Como até o momento não precisei desenvolver algo parecido, por hora fico devendo. Vou estudar uma maneira de realizar isso, e tendo algo, retorno.

Abs
Opa, grato pela ajuda, entendo que seja uma "perfumaria" mas se isso for possível será muito interessante a aplicação em informativos que contenham muito texto :roll:

EDIT: consegui achar um video tutorial em inglês daquilo que eu quero fazer porém no VB
https://www.youtube.com/watch?v=VJL7G8gesLM
Será possível no VBA?

EDIT2: Boa tarde a todos,
Dei uma fuçada internet adentro e consegui achar alguma coisa similar porém não exatamente como a do video mencionado no primeiro EDIT!

Extraído desse local https://www.ozgrid.com/forum/forum/othe ... lling-text
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private m_blnUnload As Boolean
Private m_blnCreditsRolling As Boolean
Private Sub CommandButton1_Click()
    If m_blnCreditsRolling Then
        m_blnUnload = True
    Else
        Unload Me
    End If
End Sub
Private Sub UserForm_Activate()
    Dim lngSpeed As Long
    m_blnCreditsRolling = True
    lngSpeed = 150
    Do While ListBox1.ListCount > 0
        ListBox1.RemoveItem 0
        DoEvents
        If m_blnUnload Then Exit Do
        Sleep lngSpeed
    Loop
    m_blnCreditsRolling = False
    If m_blnUnload Then CommandButton1_Click
End Sub
Private Sub UserForm_Initialize()
    Dim lngIndex As Long
    Dim credit As Variant
    
    credit = Array("test", "test 1", "test 2", "test", "test 1", _
    "test 2", "test", "test 1", "test 2", "test", "test 1", "test 2", _
    "test", "test 1", "test 2", "test", "test 1", "test 2", "test", _
    "test 1", "test 2", "test", "test 1", "test 2", "test", "test 1", _
    "test 2", "test", "test 1", "test 2", "test", "test 1", "test 2", _
    "test", "test 1", "test 2", "test", "test 1", "test 2")
    
   For lngIndex = LBound(credit) To UBound(credit)
        ListBox1.AddItem credit(lngIndex)
    Next
     
    For lngIndex = LBound(credit) To UBound(credit)
        ListBox1.AddItem ""
    Next
End Sub
Ele faz com que os textos ou valores dentro de uma listbox mude setando automaticamente a barra de rolagem de cima para baixo como se fosse créditos de um filme ou o tal efeito Scroll UP que mencionei no meu Post inicial

Não era bem o que buscava mas até que eu ache uma maneira do label fazer o que achei nesse video em VB irei usar este comando...
Caso alguém tiver a distreza de fazer o comando pelo label informe aqui :roll: