VBA用户表单单页链接库存条目

VBA用户表单单页链接库存条目,vba,excel,Vba,Excel,我有一个excel表格/用户表格,我正在制作用于库存的表格 我的userform的第一个功能是从表单上的文本框中获取连接器和配偶的数据,并将其放在我告诉它的行/单元格中的工作表中。这个代码很好用 第二个功能是交叉引用接头和配合件,以便在搜索或更改零件数据时,我可以获得最新信息。 我通过在连接器和配对创建时将单元地址存储在第1行中来实现这一点。然后,当我点击“确认”时,地址被复制到它们自己行中的指定单元格中,并添加“=”符号,以创建引用公式 图纸中的一行用于后面带有配合参照的连接件,下一行用于后面

我有一个excel表格/用户表格,我正在制作用于库存的表格

我的userform的第一个功能是从表单上的文本框中获取连接器和配偶的数据,并将其放在我告诉它的行/单元格中的工作表中。这个代码很好用

第二个功能是交叉引用接头和配合件,以便在搜索或更改零件数据时,我可以获得最新信息。 我通过在连接器和配对创建时将单元地址存储在第1行中来实现这一点。然后,当我点击“确认”时,地址被复制到它们自己行中的指定单元格中,并添加“=”符号,以创建引用公式

图纸中的一行用于后面带有配合参照的连接件,下一行用于后面带有连接件参照的配合件。然后我转到下一行,再做一次

我只能用一对零件号来做这件事,之后就没有其他零件号了。 我做错了什么

代码:

    Private Sub XREFCONFIRM1_Click()

    Dim iRow1 As Long
    Dim iRow2 As Long
    Dim ws As Worksheet
    Set ws = Worksheets("1STDRAFT")
    row_number = 4

    iRow1 = ws.Cells.Find(What:=PART1.Text, SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Row

    iRow2 = ws.Cells.Find(What:=PART2.Text, SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Row

        row_number = row_number + 1

        item_in_review = Sheets("1STDRAFT").Range("A" & row_number).Value

    With ws
       If item_in_review = PART1.Text Then

      .Cells(iRow1, 15).Value = "=" & Sheets("1STDRAFT").Cells(1, 15).Value
      .Cells(iRow1, 16).Value = "=" & Sheets("1STDRAFT").Cells(1, 16).Value
      .Cells(iRow1, 17).Value = "=" & Sheets("1STDRAFT").Cells(1, 17).Value
      .Cells(iRow1, 18).Value = "=" & Sheets("1STDRAFT").Cells(1, 18).Value
      .Cells(iRow1, 19).Value = "=" & Sheets("1STDRAFT").Cells(1, 19).Value
      .Cells(iRow1, 20).Value = "=" & Sheets("1STDRAFT").Cells(1, 20).Value
      .Cells(iRow1, 21).Value = "=" & Sheets("1STDRAFT").Cells(1, 21).Value
      .Cells(iRow1, 22).Value = "=" & Sheets("1STDRAFT").Cells(1, 22).Value
      .Cells(iRow1, 23).Value = "=" & Sheets("1STDRAFT").Cells(1, 23).Value
      .Cells(iRow1, 24).Value = "=" & Sheets("1STDRAFT").Cells(1, 24).Value
      .Cells(iRow1, 25).Value = "=" & Sheets("1STDRAFT").Cells(1, 25).Value

     'With ws
            'If item_in_review = PART2.Text Then
      .Cells(iRow2, 15).Value = "=" & Sheets("1STDRAFT").Cells(1, 1).Value
      .Cells(iRow2, 16).Value = "=" & Sheets("1STDRAFT").Cells(1, 2).Value
      .Cells(iRow2, 17).Value = "=" & Sheets("1STDRAFT").Cells(1, 3).Value
      .Cells(iRow2, 18).Value = "=" & Sheets("1STDRAFT").Cells(1, 5).Value
      .Cells(iRow2, 19).Value = "=" & Sheets("1STDRAFT").Cells(1, 8).Value
      .Cells(iRow2, 20).Value = "=" & Sheets("1STDRAFT").Cells(1, 9).Value
      .Cells(iRow2, 21).Value = "=" & Sheets("1STDRAFT").Cells(1, 10).Value
      .Cells(iRow2, 22).Value = "=" & Sheets("1STDRAFT").Cells(1, 11).Value
      .Cells(iRow2, 23).Value = "=" & Sheets("1STDRAFT").Cells(1, 12).Value
      .Cells(iRow2, 24).Value = "=" & Sheets("1STDRAFT").Cells(1, 13).Value
      .Cells(iRow2, 25).Value = "=" & Sheets("1STDRAFT").Cells(1, 14).Value

            End If
        End With


    End Sub
驱动器文件夹链接:

文件直接链接:


照片链接:

这就是我的代码的外观,任何想知道的人都可以看到。我将更新我提供的一些链接,以帮助任何想要使用我的表单的人

   Private Sub XREFCONFIRM1_Click()

    Dim iRow1 As Long
    Dim iRow2 As Long
    Dim ws As Worksheet
    Set ws = Worksheets("1STDRAFT")
    row_number = 4

    iRow1 = ws.Cells.Find(What:=PART1.Text, SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Row

    iRow2 = ws.Cells.Find(What:=PART2.Text, SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Row

    Do  
    row_number = row_number + 1

        item_in_review = Sheets("1STDRAFT").Range("A" & row_number).Value

    With ws
       If item_in_review = PART1.Text Then

      .Cells(iRow1, 15).Value = "=" & Sheets("1STDRAFT").Cells(1, 15).Value
      .Cells(iRow1, 16).Value = "=" & Sheets("1STDRAFT").Cells(1, 16).Value
      .Cells(iRow1, 17).Value = "=" & Sheets("1STDRAFT").Cells(1, 17).Value
      .Cells(iRow1, 18).Value = "=" & Sheets("1STDRAFT").Cells(1, 18).Value
      .Cells(iRow1, 19).Value = "=" & Sheets("1STDRAFT").Cells(1, 19).Value
      .Cells(iRow1, 20).Value = "=" & Sheets("1STDRAFT").Cells(1, 20).Value
      .Cells(iRow1, 21).Value = "=" & Sheets("1STDRAFT").Cells(1, 21).Value
      .Cells(iRow1, 22).Value = "=" & Sheets("1STDRAFT").Cells(1, 22).Value
      .Cells(iRow1, 23).Value = "=" & Sheets("1STDRAFT").Cells(1, 23).Value
      .Cells(iRow1, 24).Value = "=" & Sheets("1STDRAFT").Cells(1, 24).Value
      .Cells(iRow1, 25).Value = "=" & Sheets("1STDRAFT").Cells(1, 25).Value

     'With ws
            'If item_in_review = PART2.Text Then
      .Cells(iRow2, 15).Value = "=" & Sheets("1STDRAFT").Cells(1, 1).Value
      .Cells(iRow2, 16).Value = "=" & Sheets("1STDRAFT").Cells(1, 2).Value
      .Cells(iRow2, 17).Value = "=" & Sheets("1STDRAFT").Cells(1, 3).Value
      .Cells(iRow2, 18).Value = "=" & Sheets("1STDRAFT").Cells(1, 5).Value
      .Cells(iRow2, 19).Value = "=" & Sheets("1STDRAFT").Cells(1, 8).Value
      .Cells(iRow2, 20).Value = "=" & Sheets("1STDRAFT").Cells(1, 9).Value
      .Cells(iRow2, 21).Value = "=" & Sheets("1STDRAFT").Cells(1, 10).Value
      .Cells(iRow2, 22).Value = "=" & Sheets("1STDRAFT").Cells(1, 11).Value
      .Cells(iRow2, 23).Value = "=" & Sheets("1STDRAFT").Cells(1, 12).Value
      .Cells(iRow2, 24).Value = "=" & Sheets("1STDRAFT").Cells(1, 13).Value
      .Cells(iRow2, 25).Value = "=" & Sheets("1STDRAFT").Cells(1, 14).Value

            End If
        End With
          Loop Until item_in_review = ""

    End Sub

此位
row_number=row_number+1
使其看起来像是您打算将其作为一个循环,但从未使其成为循环。因此,对于一个零件号,它只运行一次,然后停止。这太棒了,感谢您的关注!我只是在我的行号上加了“Do”,在语句结束后加了“Loop Until Item_In_Review=”“”,这就把一切都搞定了!再次感谢你,伙计!