Нужна помощь в возврате массива из VBA в Excel - PullRequest
1 голос
/ 21 февраля 2020

Я хотел бы вернуть значение compZ в свой лист данных Excel. Если бы вы могли сказать мне, как это сделать, я был бы очень признателен.

Код прилагается ниже:

Option Explicit
Option Base 1

Public Function valZ120() As Double

'declare variables

Dim equation As Double
Dim x As Double
Dim randint As String
Dim compZ(476) As Double
Dim derEq As Double
Dim valX As Double
Dim nvalX As Double
Dim varA As Double
Dim varB As Double
Dim i As Double

'loop from i=25 to i=500

For i = 25 To 500
   varA = (0.538083613 * 13736.62195 * i) / ((8.3145 ^ 2) * (120 ^ 2))
   varB = (2.528160538 * i) / (8.3145 * 120)
   x = 0
   nvalX = 0.2

   'a Do While loop

   Do While Abs(nvalX - x) >= (0.01)
      x = nvalX
      equation = (x ^ 3) - (x ^ 2) + (x * (varA - varB - varB ^ 2)) - (varA * varB)
      derEq = (3 * x ^ 2) - (2 * x) + (varA - varB - varB ^ 2)
      nvalX = (x) - ((equation) / (derEq))
   Loop

   'once the do while loop is complete, the value obtained is stored in the first space in the array and so on
   compZ(i - 24) = nvalX
   'this was just to test the code to make sure it was working (it is)
   MsgBox compZ(i - 24)
Next

'how do I bring the values of this array into excel?

End Function

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2020

Похоже, у вас есть одномерный массив. Должно быть легко, правда?

Сначала проверьте границы вашего массива, затем пропустите for-l oop через массив для вывода в ячейку.

Dim arrayLength as int
arrayLength = UBound(compZ) - LBound(compZ) + 1

For i = 1 To arrayLength      
       Cells(2,i).Value = compZ(i)  
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...