首页 > 解决方案 > VBA UserForm:根据条件复制和粘贴

问题描述

我正在 VBA 中创建一个用户窗体,它将从包含 3000 多个唯一框大小的单独工作表中查找特定的框大小,并仅将该大小的相应列返回到另一个工作表中。

我已经尝试了许多类型的循环,每个循环都不起作用。因此,我尝试创建一个复制和粘贴方法,该方法将复制第一列与我的组合框中的值匹配的所有行。我继续遇到的问题是我的目标/粘贴范围的代码行。我收到运行时错误 1004“您无法在此处粘贴,因为复制区域和粘贴区域的大小不同”。

这是单击 Enter 按钮后我当前在用户窗体中的 VBA 代码。作为参考,包含我要搜索的所有数据的工作表是 Lookup Draft,我要粘贴匹配行的工作表是 Box Lookup Data。

Sub EnterButton_Click()

Dim ws As Worksheet
Dim datawks As Worksheet

Set ws = Worksheets("Box Lookup Data")
Set datawks = Worksheets("Lookup Draft")

Dim LastRow As Long
Dim i As Long, j As Long

   'Find the last used row
   With datawks
      LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
   End With

   'first row number to paste values
   With ws
      j = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
   End With

   'copy from datawks to ws
   For i = 1 To LastRow
       With datawks
           If .Cells(i, 1).Value = ComboBox.Text Then
               .Rows(i).Copy Destination:=ws.Range("B" & j)
               j = j + 1
           End If
       End With
   Next i

End Sub

我试图将包含目标的代码行更改为单元格引用,但这也不起作用。我希望粘贴的范围包括所有匹配的行,而不仅仅是找到的第一个匹配项——这是我在尝试复制/粘贴之前遇到的问题。

我要粘贴的工作表有 5 个标记列:(B)Box Size、(C)Customer、(D)Price、(E)Quantity 和 (F)Order Date

有什么想法吗?

标签: excelvbacomboboxuserform

解决方案


推荐阅读