几天前,我发布了一个问题,以便了解如何编写代码,让我在函数工作簿和输入/表工作簿之间进行通信。 @DarthSpeedious帮助我提供了一个代码,该代码在另一个工作簿中计算后返回正确的值。
但是,它只返回一次计算。为了尝试循环我最后一次帮助的代码,我尝试为其中一个输入变量创建一个数组,用作循环过程的计数器。在运行代码时,VBA一直在冻结我,因此我无法调试代码。我已经尝试了几种不同的构造数组和循环参数的方法,但没有一种方法是成功的。
有人可以帮助我吗?
Public Sub Decompact()
' Gets input from another workbook
Dim wb1 As Workbook ' Declaring wb1 and wb2 as variable of type Workbook
Dim wb2 As Workbook
Set wb1 = Workbooks.Open("decompaction along exmpleline.xlsx") 'Note: In order to access data from another workbook, it should be open.
Set wb2 = ThisWorkbook 'ThisWorkbook: refrence to the workbook having this code
'Setting up array for y1
last_row = Range("U3").End(xlDown).Row
Dim y1()
ReDim y1(last_row - 2, 1)
'Storing values in array
For i = 3 To last_row - 2
y1(i, 0) = Range("U" & i + 2)
Next
'Looping decompaction
For z = LBound(y1) To UBound(y1)
wb1.Sheets("Shaly sst").Range("B3") = wb2.Sheets("Sheet1").Range("U" & i + 1) 'Accept input of variable y1 in Ui and store it in cell B3 of book1
wb1.Sheets("Shaly sst").Range("B2") = wb2.Sheets("Sheet1").Range("V" & i + 1) 'Accept input of variable y2 in Vi and store it in cell B3 of book1
wb2.Sheets("Sheet1").Range("AC" & i + 1) = wb1.Sheets("Shaly sst").Range("H3") 'Output from book1 in H3 to a cell ACi in book2
Next z
End Sub
答案 0 :(得分:1)
NVM, 想通了:
Sub Decompact3()
' Gets input from another workbook
Dim wb1 As Workbook ' Declaring wb1 and wb2 as variable of type Workbook
Dim wb2 As Workbook
Dim LastRow As Long
Set wb1 = Workbooks.Open("decompaction along exmpleline.xlsx") 'Note: In order to access data from another workbook, it should be open.
Set wb2 = ThisWorkbook 'ThisWorkbook: refrence to the workbook having this code
With wb2.Sheets("Sheet1")
LastRow = .Range("U" & .Rows.Count).End(xlUp).Row
End With
For i = 3 To LastRow
wb1.Sheets("Shaly sst").Range("B3") = wb2.Sheets("Sheet1").Cells(i, 21) 'Access value stored in cell A1 of sheet1 in book1 and stre it in cell A1 of book2
wb1.Sheets("Shaly sst").Range("B2") = wb2.Sheets("Sheet1").Cells(i, 22)
wb2.Sheets("Sheet1").Cells(i, 29) = wb1.Sheets("Shaly sst").Range("H3") 'Store the output (cell C1 of book2) in cell C1 of book1
Next i
End Sub
再次感谢DarthSpeedious的帮助!