Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
Avatar do usuário
Por pasedo
Posts Avatar
#29403
Bom dia, pessoal, tenho este erro Me.Controls("Text" & numMin + i - 2).Value = arr(i), tirei este exemplo do access e tentei adapta-lo no excel, Sei que este controls não da certo mesmo mas qual substituir para gerar as cartelas?Grato mais uma vez, sempre que procurei soluções aqui eu encontrei graças a vocês sempre muito dedicados em ajudar no conhecimentos.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por wesleyribeiro123
Posts Avatar
#29405
Pasedo
Bom dia,

A propriedade .Controls não aceita uma String como referência, ela lê apenas um Inteiro.
Para que o VBA percorra todas as tuas Label's, apenas exclua o "Text" & que dará certo.

Desta forma:
Código: Selecionar todos
Me.Controls(numMin + i - 2).Value = arr(i)
Avatar do usuário
Por pasedo
Posts Avatar
#29407
wesleyribeiro123, obrigado, mas o erro continua , esta dando uma mensagem que o objeto não aceita esta propriedade ou método.
Avatar do usuário
Por Reinaldo
Avatar
#29408
Apesar de nomeados como Text0 à 24, esses controles são Labels que não tem a propriedade Value.
Para Labels deve-se utilizar sua propriedade Caption:
Me.Controls("Text" & numMin + i - 2).Value = arr(i) -->Me.Controls("Text" & numMin + i - 2).Caption = arr(i)
Outros senão:
Label Text12 não é existente em seu projeto, no local está um label nomeado Lbl_Livre; verifique a necessidade desse Lbl_livre, se não necessário, renomeie -o ou acrescente .
Label Text24 não está presente em seu projeto, do 23 pula para 25 que não é utilizado, renomeie Text25 para Text24
Por Marcelo85
#29414
Olá pasedo, tudo bem?

Como o nosso amigo wesleyribeiro123 falou:
A propriedade .Controls não aceita uma String como referência, ela lê apenas um Inteiro.
Considerando isso, a solução que fiz foi a seguinte. Para cada iteração dos arrays que você criou (arr1(), arr2(), etc), é feita uma outra iteração por todos os componentes do formulário verificando o nome do componente (por ex: "text0", "text1", "label1", "commandbutton1", etc). Se o nome do componente for o certo, a propriedade caption recebe o valor do array. Veja o código.
Código: Selecionar todos
Private Sub PreencheCaixas(ByRef arr(), ByVal numMin As Integer, ByVal numMax As Integer)
'By JPaulo ® Maximo Access
  Dim i
  Dim controle As Control
    
    For i = 1 To UBound(arr)
        For Each controle In Controls
            If controle.Name = "text" & numMin + i - 2 Then
                controle.Caption = arr(i)
            End If
        Next
    Next i
End Sub
Vou anexar o arquivo funcionando. Veja se é isso que você gostaria de fazer.

Abraço.
Avatar do usuário
Por pasedo
Posts Avatar
#29417
Reinaldo muito obrigado, fiz o que recomendou e deu certinho, estou postando o arquivo para quem quiser .
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord