【发布时间】:2021-04-15 09:27:10
【问题描述】:
我正在寻找一个循环来复制每个匹配输入值的值,而不仅仅是停留在它找到的第一个。 因此,我在一个组合框中输入了一些我想在 2 个工作簿(wb FC 和 CL1)中找到的 ID 号,并将该值复制到其右侧并粘贴到另一个工作簿中。在 FC 中该值只会出现一次,但在 CL1 中它可以出现多次。我尝试的循环仅针对第一个找到的值进行处理,我希望它为每个匹配的值复制它。
这是我想出的:
Option Explicit
Private Sub CommandButton1_Click()
Dim txt As String, wart As String
Dim offset As Integer
Dim r As Range, c As Range, d As Range, e As Range
txt = txtCo.Text
offset = txtOffset.Text
Set r = Workbooks("FC.xlsx").Worksheets("Arkusz1").Range("A:A")
Set c = r.Find(txt, LookIn:=xlValues)
If c Is Nothing Then
MsgBox "nieznaleziono"
Exit Sub
End If
wart = c.offset(0, offset).Text
MsgBox wart
Set d = Worksheets("CL1").Range("B:B")
Set e = d.Find(txt, LookIn:=xlValues)
e.offset(0, 18) = wart
End Sub
谢谢
【问题讨论】:
-
您使用
FIND查找第一个值,但没有使用FindNext查找任何后续值。查看MS example - 检查c is not nothing,然后检查r.FindNext(c)。