/ / Значення масиву, не перекладені на клітини - excel, vba

Значення масиву не переносяться на комірки - excel, vba

Я намагаюся дізнатися, як використовувати словник у. \ TExcel VBA. Тест полягає в тому, щоб отримати всі значення з рядків 1-100000 у стовпці А до словника через масив, а потім записати всі значення у стовпець B. Це відмінно працює до рядка 34464, решта рядків у стовпці B просто отримує #N/A.

Будь-які ідеї чому?

Sub nnn()

"Tools - References - Microsoft Scripting Runtime
Dim myArray As Variant
Dim myRow As Long
Dim dicMyDictionary As Scripting.Dictionary
Set dicMyDictionary = New Scripting.Dictionary

With ThisWorkbook.Worksheets("Sheet1")

myArray = Range(Cells(1, 1), Cells(100000, 1)).Value

For myRow = LBound(myArray, 1) To UBound(myArray, 1)
dicMyDictionary.Add myRow, myArray(myRow, 1)
Next myRow

myArray = dicMyDictionary.Items

.Range("B1").Resize(dicMyDictionary.Count, 1).Value = Application.Transpose(myArray)
Set dicMyDictionary = Nothing

End With

End Sub

Відповіді:

1 для відповіді № 1

Через обмеженості робочого листа функція Transpose (див. також посилання, розміщені Paul Bica), вам потрібно призначити елементи масиву безпосередньо. Слід працювати з такими елементами:

Option Explicit
Sub nnn()

"Tools - References - Microsoft Scripting Runtime
Dim myArray As Variant
Dim myRow As Long
Dim dicMyDictionary As Scripting.Dictionary
Set dicMyDictionary = New Scripting.Dictionary

With ThisWorkbook.Worksheets("Sheet1")

myArray = Range(Cells(1, 1), Cells(100000, 1)).Value

For myRow = LBound(myArray, 1) To UBound(myArray, 1)
dicMyDictionary.Add myRow, myArray(myRow, 1)
Next myRow

ReDim myArray(1 To dicMyDictionary.Count, 1 To 1)
For myRow = 1 To UBound(myArray, 1)
myArray(myRow, 1) = dicMyDictionary(myRow)
Next myRow

.Range("B1").Resize(dicMyDictionary.Count, 1).Value = myArray
Set dicMyDictionary = Nothing

End With

End Sub