【问题标题】:Match listbox First column number to sheet first column number and copy paste number on existing sheet adjacent matching number vba excel匹配列表框第一列号到表格第一列号并在现有表格相邻匹配号vba excel上复制粘贴号
【发布时间】:2021-10-13 17:38:25
【问题描述】:

我有一个多列列表框,并且第一列中有许多单个或重复的数字。 当单击命令按钮时,列表框的第一列编号将与 sheet1 匹配 (B) 列的数字。 Sheet1 列 (B) 编号是唯一的。 复制 sheet1 列 (E) 数据并粘贴列 (C) 仅匹配唯一数字。

请帮帮我,我很担心。

我的代码是:

Private Sub commandbutton1_Click()

Dim ws As Worksheet

Dim x As Long

Dim fCell As Range

Set ws = ThisWorkbook.Sheets("Sheet1")

With ws

Set fCell = .Range("A:A").Find(Me.listbox1.value, , xlValues, xlWhole)

'If record doesn't match, do nothing
If fCell Is Nothing Then Exit Sub

x = fCell.Row

p = .Cells(i, 5).Value

.cells(i, 3).value=p

End With

End Sub

这是我的 Listbox1 示例... Listbox1

我的工作表1: Sheet1

现在当 listbox1 First Column (Code) 将与 Sheet(Sheet1) Column:B (Code) 匹配时 Sheet1 Column:E (H-Qty) 复制并粘贴到 Column:C (G-Qty) 中。 复制和粘贴将仅通过匹配(listbox1 & sheet1 => 代码) 这是我想要的图片: Change Sheet1 After Matching

【问题讨论】:

  • 请告诉我们您自己尝试了什么。
  • 你的问题至少对我来说不是很清楚。那么,你想做什么?单击按钮,以处理列表框中的特定选定项目,以便在“B:B”列中查找每个第一次出现并在“C”中复制找到的单元格行的范围“E”?如果是,请尝试将i(从.Cells(i,... 替换为x。如果仍然不起作用,请放置下一个代码行以检查Find 函数是否返回一个范围:Debug.Print fCell.Address: Stop。立即插入此行在If fCell Is Nothing Then Exit Sub 之后。你的代码到达这一行了吗?
  • 我给样例(1)listbox1(2)sheet1(3)换sheet1
  • 那么,请测试我发布的代码并发送一些反馈。

标签: vba


【解决方案1】:

请测试下一个修改后的代码:

Private Sub commandbutton1_Click()
 Dim ws As Worksheet, x As Long, fCell As Range

 Set ws = ThisWorkbook.Sheets("Sheet1")
 If Me.ListBox1.ListIndex = -1 Then Exit Sub  'when nothing selected
 ListBox1.BoundColumn = 1                     'column where from to return the value

 With ws
    Set fCell = .Range("A:A").Find(Me.ListBox1.value, , xlValues, xlWhole)
    'If record doesn't match:
    If fCell Is Nothing Then Exit Sub
        x = fCell.row
         .cells(x, 3).value = .cells(x, 5).value
 End With
End Sub

【讨论】:

  • 这段代码很好用。但是 listbox1 从未被选中。并且不需要 Debug.Print "No match for" 因为它一直都是匹配的。请帮助我您的下一个反馈。谢谢
  • @Shahin Alam 恐怕我无法得到你...如果在列表框中选择了任何内容,Me.ListBox1.value 将不会返回必要的值。你指的是If Me.ListBox1.ListIndex = -1 Then Exit Sub这一行吗?然后,如果您确定始终匹配,您也可以跳过所有以If fCell Is Nothing... 开头的行。无论如何,我将删除 Debug.Print 部分。它仅适用于发生意外情况的情况,以便轻松调试它...删除了所需的代码行。
  • 这就是我担心的原因。感谢您的反馈意见。如果您有任何没有上述讨论的新信息,请分享给我。
  • @Shahin Alam 我必须承认我不明白你想说什么,对不起......我还想通知你,我们在这里,当有人回答我们的问题时,勾选左侧检查的代码框,以使其接受答案。这样,搜索类似问题的其他人将知道代码有效并回答了问题。那么,您是否认为上述代码没有回答您的问题?如果是,您问题的哪一部分没有得到回答?
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多