Notifications
Clear all

Gravar, lê valores,vários objetos, UserForm em uma Célula

6 Posts
1 Usuários
0 Reactions
1,128 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Gravar e lê valores de vários objetos de um UserForm em uma única Célula

Inicialmente tinha feito assim

  
GRAVA:
  For Cs = 1 To 13
        revC = "revC" & Cs: freC = "freC" & Cs: incrC = "incrC" & Cs
        revL = "revL" & Cs: freL = "freL" & Cs: incrL = "incrL" & Cs
        Lo = "Lo" & Cs
        Cells(41, 5 + Cs).Value2 = Me.Controls(revC).Value
        Cells(42, 5 + Cs).Value2 = Me.Controls(freC).Value
        Cells(43, 5 + Cs).Value2 = Me.Controls(incrC).Value

        Cells(47, 5 + Cs).Value2 = Me.Controls(revL).Value
        Cells(48, 5 + Cs).Value2 = Me.Controls(freL).Value
        Cells(49, 5 + Cs).Value2 = Me.Controls(incrL).Value
        Cells(53, 5 + Cs).Value2 = Me.Controls(Lo).Value
    Next


Lê
    For Cs = 1 To 13
        revC = "revC" & Cs: freC = "freC" & Cs: incrC = "incrC" & Cs
        revL = "revL" & Cs: freL = "freL" & Cs: incrL = "incrL" & Cs
        Lo = "Lo" & Cs

        Me.Controls(revC).Value = Cells(41, 5 + Cs).Value2 = True
        Me.Controls(freC).Value = Cells(42, 5 + Cs).Value2
        Me.Controls(incrC).Value = Cells(43, 5 + Cs).Value2
        Me.Controls(revL).Value = Cells(47, 5 + Cs).Value2 = True
        Me.Controls(freL).Value = Cells(48, 5 + Cs).Value2
        Me.Controls(incrL).Value = Cells(49, 5 + Cs).Value2
        Me.Controls(Lo).Value = Cells(53, 5 + Cs).Value2 = True
    Next

mas como quero adicionar mais objetos e ter uma opção de salvamentos maiores
tentei salvar os valores de cada conjunto em apenas uma celula, no caso seria 13 objetos em apenas uma celula.
-------------------------------------------------------------------------------------------

como o Array("") precisa ter seus valores separados por Virgula e estar entre aspas
Para gravar fiz assim:

ref = Array("revC", "freC", "incrC", "revL", "freL", "incrL", "Lo")
For r = 0 To 6
revCA = """"
For Cs = 1 To 13
ObRef = ref(r) & Cs
revCA = revCA & Me.Controls(ObRef).Value & """"
If Cs < 13 Then revCA = revCA & "," & """"
Next
Cells(41 + r, 6).Value2 = revCA
Next

Beleza, cada conjunto está sendo salvo em 1 celula
"Falso","Verdadeiro","Falso","Verdadeiro","Falso","Falso","Falso","Falso","Falso","Verdadeiro","Falso","Falso","Falso"
"5","","","","6","","","","","","","",""
mas...
Para le os valores não fui tão bem :roll:
Array trata os valores da celula como um só

ref = Array("revC", "freC", "incrC", "revL", "freL", "incrL", "Lo")
For r = 0 To 6
dr = Cells(41 + r, 5).Value2
revCA = Array(dr)'array considera dr como valor unico
For Cs = 1 To 13
ObRef = ref(r) & Cs
Me.Controls(ObRef).Value = revCA(Cs - 1)'<<Dá erro
Next
Next

E agora, como fazer a leitura de cada valor de forma independente?

Att.

 
Postado : 25/08/2014 11:38 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

consegui parcialmente usando a função split

revCA = Split(dr, ",")

se alguém tiver uma ideia melhor ...

 
Postado : 26/08/2014 1:54 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

o vba manda para o excel True e False como Verdadeiro e Falso
mas na hora de pegar não aceita .... :x

individualmente eu tinha colocado
Me.Controls(revL).Value = Cells(47, 5 + Cs).Value2 = True

pq como vba compara celula com valor "verdadeiro" como true dá true senão false

mas nesse caso como vai ser todos os objetos ao mesmo tempo com a mesma instrução não se pode fazer isso
e agora?

 
Postado : 26/08/2014 2:13 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

até aparecer opção melhor...

    ref = Array("revC", "freC", "incrC", "revL", "freL", "incrL", "Lo")
    For r = 0 To 6
        dr = Cells(41 + r, 6).Value2

        revCA = Split(dr, ",")    'Array(obj)
        For Cs = 1 To 13
            ObRef = ref(r) & Cs
            dr = revCA(Cs - 1)
            If dr = "Verdadeiro" Then
                dr = True:
            ElseIf dr = "Falso" Then
                dr = False:
            End If
            Me.Controls(ObRef) = dr
        Next
    Next

se alguém conhecer um jeito melhor de se fazer tudo isso aceito opines

 
Postado : 26/08/2014 2:35 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Sei que enrolei no post,

Mas alguém pode me dizer
se é melhor subdividir as gravações entre varias células ou eu posso colocar tudo junto?

nesse caso aí eu dividi por grupos,
estava pensando em fazer uma busca por todos os objetos de um UserForm e nesse caso mais especifico de uma das paginas de um (Multi-pagina" se for possível")
e salvar seus Conteúdos e estados em apenas uma célula.

isso facilitaria o processo de gravação e leitura sem precisar me preocupar com nomes de objetos

Alguém aí pode me ajudar, sei que isso vai ser útil não apenas para mim, mas para muitos que usam userforms e precisam ou querem salvar seus estados.

att

 
Postado : 26/08/2014 11:16 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Parece que ninguém vai palpitar a respeito

consegui fazer identificar a multi page ativa e varrer os objetos dela
com mais uma filtragem para não ser salvo Labels e uns outros objetos,
dá para usar em qualquer useform
agora a preocupação é se não tem perigo da ordem de localizar os objetos mudar e portanto embaralhar os valores entre elas

mas..
como já consegui oq queria e o restante é um outro assunto vou dar o tópico por encerrado

até

 
Postado : 26/08/2014 10:06 pm