Notifications
Clear all

CELLS VARIAVEL

7 Posts
3 Usuários
0 Reactions
924 Visualizações
(@pramirez31)
Posts: 0
New Member
Topic starter
 

Bom dia!

Estou tentando utilizar o seguinte código:

For n=1 to i
value(n) = Cells(1, Ordem(n)).Value
Next

Mas dá um erro com a seguinte mensagem, indicando a linha em negrito:
"Erro de definição de aplicativo ou de definição de objeto."

Ainda que eu declare uma variável "a" e ela receba o valor de Ordem(n) e troque o Ordem(n) por a no Cells, continua com o mesmo erro.
Ex.:

For n=1 to i
a=Ordem(n)
value(n)=Cells(1,a).Value
Next

Desde já agradeço,
Pedro Ivo.

 
Postado : 17/11/2015 8:17 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

PRamirez31,

Bom dia!

Bem... assim, se maiores detalhes fica muito difícil... não se sabe o que você quer fazer, como declarou as variáveis e por aí vai... Fazendo algumas suposições, cheguei ao código abaixo:

Sub Teste()
    Dim value(11) As Integer
    Dim n As Integer
    'Dim Ordem As Integer
    Dim I As Integer
    
    I = 11
    For n = 1 To I
        value(n) = Cells(1, n).value
    Next
End Sub

O problema com o erro relatado é que quando você utiliza Cells, você tem que passar como parâmetro um inteiro referente a linha e outro inteiro referente a coluna.

 
Postado : 17/11/2015 8:55 am
(@pramirez31)
Posts: 0
New Member
Topic starter
 

Wagner,

Obrigado pela resposta!

A ideia do codigo é "desembaralhar" as colunas de uma planilha. Por exemplo:

.....A.....B......C.....D.....E
1....C.....L......L.....S.....E
2
3
4
5

O Vetor Ordem recebe a ordem correta com os números das colunas, como abaixo:

Ordem(1)=1
Ordem(2)=5
Ordem(3)=3
Ordem(4)=2
Ordem(5)=4

E o vetor Valor recebe os valores contidos nas células, de acordo com essa ordem.

Valor(1)=C
Valor(2)=E
Valor(3)=L
Valor(4)=L
Valor(5)=S

Para que ele seja descarregado depois em outra planilha:

.....A.....B......C.....D.....E
1....C.....E......L.....L.....S
2
3
4
5

Por isso a ideia do código:

Para carregar o vetor valor:

For n=1 to i(5 no caso)
Valor(n)=Cells(1,Ordem(n)).Value
Next

E para descarregar:

For n=1 to i
Cells(1,n).Value=Valor(n)
Next

Espero que consiga entender. rs'
Lembrando que declarei o vetor Valor como Variant, pois as informações podem ser datas, valores, nomes, etc... e Ordem como Integer.

 
Postado : 17/11/2015 10:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo descritivo, aparentemente não há razão para o erro reportado. Possivelmente algo com as variaveis (declaração/utilização0 porem pelo que diz está ok.
Poste o seu modelo com alguns dados (ficticios) assim poderá obter um retorno mais efetivo e direto para sua demanda

 
Postado : 18/11/2015 7:40 am
(@pramirez31)
Posts: 0
New Member
Topic starter
 

Bom dia, Reinaldo!

Estou enviando em anexo a planilha que uso com dados fictícios.

A ordem final deve ser:
Matricula>Nome>CPF>Data Nasc>Data Admissão>Salário>Sexo>Tipo de Segurado> Plano

Penso de haver alguma impossibilidade em se usar um vetor dentro de um Cells. Tem alguma coisa a ver mesmo?

 
Postado : 18/11/2015 7:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aparentemente o problema está na definição das variáveis.
Diferente de outras linguagens, no vba deve-se declinar o tipo de dado para cada variável e não somente no final da linha.

Assim uma declaração assim: Dim a, b, n, i, m, Ordem(), j, k As Integer, somente a variavel k será considerada integer, todas as demais serão definidas como variant.
Nessa situação os dados assumidos no Array Ordem serão considerados como String (texto).
Faça sua declaração assim:
Dim a As Integer, b As Integer, n As Integer
Dim i As Integer, m As Integer, j As Integer
Dim k As Integer, Ordem() As Integer
Obs.: Deixei 3 variaveis por linha por uma preferencia pessoal, pode declarar todas na mesma linha

Teste e veja se atende

 
Postado : 18/11/2015 9:27 am
(@pramirez31)
Posts: 0
New Member
Topic starter
 

Era isso mesmo, Reinaldo!!

Muito obrigado pela ajuda!! :)

 
Postado : 18/11/2015 11:23 am