Fonction Excel VBA pour imprimer un tableau dans le classeur
J'ai écrit une macro qui se trouve à 2 dimensions tableau, et "impressions" à l'équivalent de cellules dans un classeur excel.
Est-il un moyen plus élégant de faire cela?
Sub PrintArray(Data, SheetName, StartRow, StartCol)
Dim Row As Integer
Dim Col As Integer
Row = StartRow
For i = LBound(Data, 1) To UBound(Data, 1)
Col = StartCol
For j = LBound(Data, 2) To UBound(Data, 2)
Sheets(SheetName).Cells(Row, Col).Value = Data(i, j)
Col = Col + 1
Next j
Row = Row + 1
Next i
End Sub
Sub Test()
Dim MyArray(1 To 3, 1 To 3)
MyArray(1, 1) = 24
MyArray(1, 2) = 21
MyArray(1, 3) = 253674
MyArray(2, 1) = "3/11/1999"
MyArray(2, 2) = 6.777777777
MyArray(2, 3) = "Test"
MyArray(3, 1) = 1345
MyArray(3, 2) = 42456
MyArray(3, 3) = 60
PrintArray MyArray, "Sheet1", 1, 1
End Sub
source d'informationauteur Zach
Vous devez vous connecter pour publier un commentaire.
Sur le même thème que les autres réponses, en gardant les choses simples
Créer un tableau de type variant (plus facile par la lecture de gamme équivalente à une variable de type variant).
Puis remplir le tableau, et d'attribuer le tableau directement à la plage.
Le tableau de variantes va finir comme un 2-D de la matrice.
Une façon plus élégante consiste à attribuer à l'ensemble de la baie à la fois:
Mais attention: cela ne fonctionne que jusqu'à une taille d'environ 8 000 cellules. Excel renvoie une erreur étrange. La taille maximale n'est pas fixe et varie beaucoup d'Excel installation à Excel d'installation.
Vous pouvez définir une Plage, la taille de votre tableau et utiliser la valeur de la propriété:
Ma version testée
Comme d'autres l'ont suggéré, vous pouvez écrire directement un tableau en 2 dimensions dans une Plage sur la feuille, en revanche si votre tableau est unique dimensions alors vous avez deux options:
Voici un exemple illustrant les deux options:
Remarque: Transposer va causes de la colonne par colonne, de sortie, pour obtenir de ligne-par-ligne de sortie de transposer il encore de l'espoir - qui fait sens.
HTH