Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Alterar o Nome da Variável em Loop [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
lima27
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Mar 30, 2016 2:43 pm

Alterar o Nome da Variável em Loop [RESOLVIDO]

Mensagem por lima27 »

Boa tarde, pessoal

Estou com um pequeno desafio no meu código, gostaria de saber se alguém pode me ajudar.
Tenho uma situação em que no Formulário 01 são selecionados diversos itens para um lançamento de dados.
Esses itens são armazenados em variáveis.

A dificuldade que tenho é saber se consigo atualizar o nome da variável dentro de um loop e, consequentemente, o valor da variável.
No exemplo a seguir, o modelo que tentei e outras diversas variações não funcionaram.
Seria fácil resolver com um IF, mas no meu projeto o número de loops é imprevisível e alto e não ficaria interessante nem possível fazer tantos IFs.

Segue o código base:

Código: Selecionar todos

Option Explicit
Public PROD1, PROD2, PROD3 as String
Public CICLO as Integer
FORM 01

Código: Selecionar todos

Private Sub Carregar_Dados()

	If ckprod1.value = true and PROD1.value <> Empty then
		MsgBox "Selecione o Produto1!"
	Elseif ckprod2.value = true and PROD2.value <> Empty then
		MsgBox "Selecione o Produto2!"
	Elseif ckprod3.value = true and PROD3.value <> Empty then
		MsgBox "Selecione o Produto3!"
	End if

	PROD1 = txtprod1.value
	PROD2 = txtprod2.value
	PROD3 = txtprod3.value
	
	If PROD1.value <> Empty then
		CICLO = 1
	Elseif PROD2.value <> Empty then
		CICLO = 2
	Elseif PROD3.value <> Empty then
		CICLO = 3
	End if	
End Sub
FORM 02

Código: Selecionar todos

Private Sub Carregar_Dados()

	Dim L As Integer
	Dim LINHA As Long

    'Procurar a primeira célula vazia
    Worksheets("Lançamentos").Range("A1").Select
    Do
    If Not (IsEmpty(ActiveCell)) Then
    ActiveCell.Offset(1, 0).Select
    End If
    Loop Until IsEmpty(ActiveCell) = True
    
    LINHA = ActiveCell.Row
    
'Atribui um valor à variável
For L = 1 To CICLO
    
    PRODUTO = "PROD" & L

    'Carregar os dados digitados nas caixas de texto para a planilha
    ActiveCell.Offset((LINHA + L), 0).Value = VBA.Format(txtdata.Value, "mm/dd/yyyy")
    ActiveCell.Offset((LINHA + L), 1).Value = txtnumerodanota.Value
    ActiveCell.Offset((LINHA + L), 2).Value = PRODUTO
    
Next L

End Sub
Editado pela última vez por lima27 em Qua Nov 01, 2017 12:52 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


lima27
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Mar 30, 2016 2:43 pm

Re: Alterar o Nome da Variável em Loop

Mensagem por lima27 »

Pessoal,
Alguém poderia me ajudar? Pelo menos saber se é possível levar essa proposta adiante.

Obrigado!


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Alterar o Nome da Variável em Loop

Mensagem por PRMPOKER »

Bom dia lima, tudo bem?

Tenta explicar o máximo possível, pois eu não entendi. Detalha qual variável, em qual situação, para que a gente possa tentar te ajudar.

Um grande abraço!


lima27
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Mar 30, 2016 2:43 pm

Re: Alterar o Nome da Variável em Loop

Mensagem por lima27 »

PRMPOKER escreveu: Sex Out 20, 2017 10:32 am Bom dia lima, tudo bem?

Tenta explicar o máximo possível, pois eu não entendi. Detalha qual variável, em qual situação, para que a gente possa tentar te ajudar.

Um grande abraço!
Oi, PRMPOKER. Tudo certo por aqui e contigo?
Veja só, estou anexando um aquivo-modelo que ilustra bem a questão.
Acho que estou com dificuldades de explicar claramente a ideia, mas o arquivo pode ser bem útil.
Lembrando que a princípio um IF resolveria a questão mas, como disse, no projeto original são muitas outras opções e inter-relações que tornaria inviável.

Obrigado pelo suporte e interesse!

Abraços,
Anexos
Exemplo Lançamento.rar
(32.6 KiB) Baixado 277 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


lima27
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Mar 30, 2016 2:43 pm

Re: Alterar o Nome da Variável em Loop

Mensagem por lima27 »

Pessoal,

Recebi uma solução genial do Philipp Moreira em outro fórum.
Ele autorizando, posto aqui com os devidos créditos para servir a todos.

Obrigado a todos que ajudaram.
Abraços,


Pedro Viegas
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Mar 01, 2018 10:19 am

Re: Alterar o Nome da Variável em Loop

Mensagem por Pedro Viegas »

Boa tarde Lima, estou com o mesmo problema.

Teria como você postar aqui como conseguiu resolver?


diegoiorio
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Mai 07, 2019 6:17 pm

Re: Alterar o Nome da Variável em Loop [RESOLVIDO]

Mensagem por diegoiorio »

Olá todos, estava com esta mesma necessidade e consegui resolver o problema, abaixo segue solução:
Lembrando que isto é para quem tem uma quantidade fixa de controles no formulário.

Sub ControlName()
Dim i As Long
For i = 1 To 10
UserForm1.Controls("nome_do_controle" & i).Value = i ' Conteúdo que deseja colocar na propriedade value
Next
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder