Vba excel中表格工作簿和函数工作簿之间通信的代码-示例

Vba excel中表格工作簿和函数工作簿之间通信的代码-示例,vba,excel,Vba,Excel,几天前,我发布了一个问题,以了解如何编写代码,使我能够在函数工作簿和输入/表工作簿之间进行通信。@darthpeedious慷慨地帮助我在另一个工作簿中计算后,找到了返回正确值的代码 但是,它只返回一个计算结果。为了尝试循环上次帮助我的代码,我尝试为其中一个输入变量创建一个数组,用作循环过程的计数器。在运行代码时,VBA一直冻结在我身上,因此我无法调试代码。我尝试了几种不同的方法来构造数组和循环参数,但都没有成功 有人能帮我吗 Public Sub Decompact() ' Gets

几天前,我发布了一个问题,以了解如何编写代码,使我能够在函数工作簿和输入/表工作簿之间进行通信。@darthpeedious慷慨地帮助我在另一个工作簿中计算后,找到了返回正确值的代码

但是,它只返回一个计算结果。为了尝试循环上次帮助我的代码,我尝试为其中一个输入变量创建一个数组,用作循环过程的计数器。在运行代码时,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
图资源:

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的帮助

作为一种替代方法,我尝试使用单元格(I,n)和更短的语法:Sub Decompact3()Set wb1=Workbooks.Open(“book1.xlsx”)Set wb2=thispoolk last_row=Range(“U3”).End(xlDown).row For I=3 to last_row wb1.Sheets(“Shaly sst”).Range(“B3”)=wb2.Sheets(“Sheet1”).Cells(I,21)wb1.板材(“泥质sst”).范围(“B2”)=wb2.板材(“板材1”).单元(i,22)wb2.板材(“板材1”).单元(i,29)=wb1.板材(“泥质sst”).范围(“H3”)下一个i端接头