Getting data from one sheet to another on the user input
 
我有一个 Excel 工作簿,在那个工作簿中我有许多工作表。
一张称为 main,另一张称为 data,其中包含所有信息。 data 工作表在同一单元格中包含人员姓名和分配的编号。
例如:A2 将具有:123 Chris Smith
我想要实现的是让用户开始在主表中的任何位置键入数字,它会扫描数据表并完成其余数据。
因此,用户将键入 123,然后宏将填写其余的 123 Chris Smith。
		
		
- 通过在触发 WorkSheet_Change 事件时进行搜索,这是可行的。但是,我怀疑这方面的表现可能很差......
- 
您是否考虑过使用 AuUtoComplete 数据验证?这是一个可能有帮助的链接。不确定这是否是您想要的,因为它允许"完成"单个单元格,并且不允许将其他值放入其他单元格中,但您可以使用 Lookup 函数来做到这一点。
 
	 
如前所述,您可以使用 Worksheet_Change() 事件。为了向您展示它是如何工作的,请将此代码放在编辑器的 main 工作表中。现在键入任何与您的数据列表匹配的数字,然后单击单元格外,它现在将完成。 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | Private Sub Worksheet_Change(ByVal Target As Range)Dim sht As Worksheet
 Dim rng As Range
 Dim val As Variant: val = Target.Value
 
 Set sht = Worksheets("Data")
 
 If Not IsError(val) And Not IsArray(val) Then
 If val <>"" Then
 Set rng = sht.Range("A:A").Find(val &"*", LookAt:=xlWhole)
 If Not rng Is Nothing Then
 Application.EnableEvents = False
 Target.Value = rng.Value
 Application.EnableEvents = True
 End If
 End If
 End If
 End Sub
 | 
		
		
- 很抱歉,当我删除单元格时感到很痛苦,我在其中输入了数字出现以下错误"运行时错误 13:类型不匹配"它突出显示了这部分代码 Dim val As String: **val = Target.Value**
- 
试试这个版本:)
- 
它仍然抛出相同的错误,但只有当我使用删除而不是退格时。谢谢你的帮忙。
- 
我发现了导致错误的原因,这是由于我将输入数字的单元格被合并,取消合并单元格会阻止错误发生
- 
我现在能够重新创建错误。谢谢你发现它。发生类型不匹配是因为它返回了一个数组,而不是它应该可以正常工作,并且还可以防止一次复制和粘贴多个数据。它可以被编辑来处理数组。
- 
谢谢UGP,你今天真的帮助了我。
- 
抱歉最后一个问题,我保证,如果我想从上述宏中排除一个单元格,我该怎么做,例如,如果我希望 R1 在其中输入任何数字而不是添加相关数据:
- 
这是一个应该对您有所帮助的示例。您可以设置代码应该执行某些操作的范围。如果您的范围不连续,请使用联合。
- 
您好,我已经设法使一切正常,但我确实对数字 0 有疑问。如果我有一个编号为 0123 Smith Vehicle ab777 4ed 的人,另一个编号为 672 Jones Vehicle eu123 lpk 的人如果输入 0123,我会期待这个人叫史密斯出现,但它并没有带来琼斯出现的人,因为 123 在车里。他们有办法避免这种情况发生吗?
- 
您可以说 Set rng = sht.Range("A:A").Find(val &"*", LookAt:=xlWhole),它会匹配整个字符串,因此您的输入 0123 只会匹配以 0123 * 开头的字符串。但是您需要将单元格设置为文本格式,否则它将删除 0 并且不会匹配。
- 
当我添加它时,它会阻止宏工作。对不起,我知道你给了我足够多的时间来帮助我,我很感激。
- 
由于某些格式,它可能无法匹配,您是否将您输入的单元格格式化为文本而不是默认值?
- 
谢谢,这是格式问题,我将不再打扰您。