Notifications
Clear all

Como transferir array para a planilha?

3 Posts
3 Usuários
0 Reactions
1,052 Visualizações
(@klarc28)
Posts: 0
New Member
Topic starter
 
Sub teste()

Dim MyArray(6) As Variant


Dim i As Integer

For i = 0 To 5

MyArray(i) = i

Next i

Plan1.Range("A1:A6").Value = MyArray


End Sub

Quero transferir o array de uma vez, sem percorrer, dentro de um laço de repetição, posição a posição do array. Algo como

Plan1.Range("A1:A6").Value = MyArray

A sub Teste não está funcionando, todas as células na planilha ficam com o valor zero.

Utilizando a sub Teste2, todos as células na planilha ficam com o valor um.

Sub teste2()


Dim MyArray(1 To 6) As Variant


Dim i As Integer

For i = 1 To 6

MyArray(i) = i

Next i

Plan1.Range("A1:A6").Value = MyArray


End Sub
 
Postado : 14/05/2018 5:58 am
(@skulden)
Posts: 0
New Member
 

Você precisa transpor a matriz


Sub teste2()


Dim MyArray(1 To 6) As Variant


Dim i As Integer

For i = 1 To 6

MyArray(i) = i

Next i

Plan1.Range("A1:A6").Value = worksheetfunction.transpose(MyArray)


End Sub

 
Postado : 14/05/2018 6:07 am
(@edsonbr)
Posts: 0
New Member
 

Bom dia, Klark, bom dia Skulden

Para atribuir uma matriz a um range, a matriz precisa ser bidimensional com os subscritores começando em 1. Então o colega Skulden tem razão em afirmar que usar a função Transpor resolve o problema, pois essa função de planilha inteligentemente transforma a matriz unidimensional em bidimensional.

Caso vc queira fazer puramente com matrizes, defina as duas dimensões, ambas começando em 1 (a primeira representando as linhas, a segunda as colunas):

Sub teste1()
  Dim MyArray(1 To 6, 1 To 1) As Variant
  Dim i As Integer
  For i = 1 To 6
     MyArray(i, 1) = i
  Next i
  Plan1.Range("A1:A6").Value = MyArray
End Sub
 
Postado : 14/05/2018 7:29 am