Создание цикла vba, который захватывает значения ячеек - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь создать макрос для vba, который захватывает значения, введенные в мой столбец A ячеек 1-1000, а затем берет эти значения и вставляет их в функцию.

Вместо определения 1000 различных значений как:

x1 = Worksheets("Sheet1").Range("A1").Value

x2 = Worksheets("Sheet1").Range("A2").Value

x3 = Worksheets("Sheet1").Range("A3").Value

... и т. Д.

, а затем подключить их к моей функции

Dim dy As Integer, fx As Integer dy = Range("B2").Value - Range("B1").Value fx= dy*(x1+x2+x3....)

Можно ли как-нибудь создать цикл do, который выполняется из ячейки A1 в A1000, получая каждое из своих значений и вставляя его в мою функцию? Вот что у меня есть, но я не уверен, как бы я мог получить значения, введенные в ячейки.

xi = 1
Do
xi = 1 + xi
If xi = 1000 Then Exit Do
Count = Count + 1

Loop

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Ниже Query работает для вас. Код гибкий для получения количества строк в столбце «А». Нет необходимости жестко кодировать верхнюю границу значения

Dim dy As Integer, fx As Integer, iCellSum As Integer
Sub Main()
    iRowCount = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    iCellSum = 0
    For i = 1 To iRowCount
        iCellSum = iCellSum + Sheets("Sheet1").Cells(i, 1)
    Next

    dy = Range("B2").Value - Range("B1").Value

    fx = dy * iCellSum

End Sub
0 голосов
/ 22 января 2019
'create a zero-based array o9f the values in A1:A1000
dim x as variant
with Worksheets("Sheet1")
    x = application.transpose(.range("A1:A1000").value)
end with

'sum all of x
dim i as long, sumX as double
for i = lbound(x) to ubound(x)
    sumX = sumX + x(i)
next i

'another way to sum A1:A1000
with Worksheets("Sheet1")
    sumX = application.sum(.range("A1:A1000").value)
end with

'your function
Dim dy As long, fx As long
with Worksheets("Sheet1")
    dy = .Range("B2").Value - .Range("B1").Value
end with
fx = dy * sumX 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...