VBA Excel 2-Dimensional Arrays
J'ai essayé de trouver la façon de déclarer un tableau en 2 Dimensions, mais tous les exemples que j'ai trouvé jusqu'à présent sont déclarées avec un ensemble d'entiers. Je suis en train de créer un programme qui va utiliser les deux 2-Dimensions des tableaux, puis à effectuer des opérations simples sur ces tableaux (comme la recherche de la différence, ou pour cent). Les tableaux sont peuplées par des chiffres dans des feuilles de calcul Excel (un ensemble de nombres est sur la feuille "Sheet1" et un autre est sur la Feuille2, les deux ensembles ont le même nombre de lignes et de colonnes).
Car je ne sais pas combien de lignes ou de colonnes il y a j'allais utiliser des variables.
Dim s1excel As Worksheet
Dim s2excel As Worksheet
Dim s3excel As Worksheet
Dim firstSheetName As String
Dim secondSheetName As String
Dim totalRow As Integer
Dim totalCol As Integer
Dim iRow As Integer
Dim iCol As Integer
Set s1excel = ThisWorkbook.ActiveSheet
' Open the "Raw_Data" workbook
Set wbs = Workbooks.Open(file_path & data_title)
wbs.Activate
ActiveWorkbook.Sheets(firstSheetName).Select
Set s2excel = wbs.ActiveSheet
' Find totalRow, totalColumn (assumes there's values in Column A and Row 1 with no blanks)
totalRow = ActiveSheet.Range("A1").End(xlDown).Row
totalCol = ActiveSheet.Range("A1").End(xlToRight).Column
Dim s2Array(totalRow, totalCol)
Dim s3Array(totalRow, totalCol)
For iRow = 1 To totalRow
For iCol = 1 To totalCol
s2Array(iRow, iCol) = Cells(iRow, iCol)
Next iCol
Next iRow
ActiveWorkbook.Sheets(secondSheetName).Select
Set s3excel = wbs.ActiveSheet
For iRow = 1 To totalRow
For iCol = 1 To totalCol
s3Array(iRow, iCol) = Cells(iRow, iCol)
Next iCol
Next iRow
Lorsque je tente d'exécuter ce que je reçois une erreur de compilation à l' "Dim s2Array(totalRow, totalCol)" dire qu'une expression constante est nécessaire. La même erreur se produit si je le change pour "Dim s2Array(1 À totalRow, 1 À totalCol)". Car je ne sais pas ce que les dimensions sont de l'aller je ne peux pas le déclarer comme "Dim s2Array(1, 1)" parce que je vais obtenir un hors-limites d'exception.
Merci,
Jesse Smothermon
source d'informationauteur Jesse Smothermon
Vous devez vous connecter pour publier un commentaire.
En fait, je voudrais pas utiliser REDIM, ni une boucle pour le transfert de données à partir d'une feuille de tableau:
ou même
et ça y est, votre tableau est rempli de beaucoup plus rapide, avec une boucle, pas de l'instruction redim.
Vous avez besoin
ReDim
:Comme d'autres l'ont souligné, votre problème pourrait être mieux résolus avec des plages. Vous pouvez essayer quelque chose comme ceci: