Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2365|回复: 4

[已解决]请高手师傅们帮忙看下用vba怎么把指定的字找出来

[复制链接]
发表于 2015-4-2 23:26 | 显示全部楼层 |阅读模式
我附件上有2表,我希望在1月的b3:d1000中,当我在其中一个单元格内输入数字按回车的时候,他会根据这个数字在花名册a列对应的b列的名字出现在一月输入数字的单元格内,例如我在一月b3单元格内输入4,他根据花名册a列数字旁的文字是王4,那么当输入b3输入4按回车后,b3出现王4,一月的c列和d列也如此,如果输入的数字是花名册中没有的,则出现提示“该号无人”,谢谢高手师傅们的帮忙。
最佳答案
2015-4-3 14:34
qiongmei 发表于 2015-4-3 06:57
谢谢2个高手师傅的回答,您们的代码正是我所希望的,我的表达不清楚,但是2楼的师傅很能理解我的意思,但能 ...

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  If Target.Column > 1 And Target.Column < 5 And Target.Row > 2 Then
    If Application.CountIf(Sheets("花名册").[a:a], Target) = 0 Then
         MsgBox "该号无人": Target = ""
     Else
        Target = Sheets("花名册").[a:a].Find(Target)(1, 2)
    End If
  End If
Application.EnableEvents = True
End Sub

Book1.rar

1.8 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-4-3 02:23 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3.   If Target.Column > 1 And Target.Column < 5 And Target.Row > 2 Then
  4.     If Application.CountIf(Sheets("花名册").[a:a], Target) = 0 Then
  5.         MsgBox "该号无人"
  6.      Else
  7.         Target = Sheets("花名册").[a:a].Find(Target)(1, 2)
  8.     End If
  9.   End If
  10. Application.EnableEvents = True
  11. End Sub
复制代码

Book1.zip

13.54 KB, 下载次数: 4

回复

使用道具 举报

发表于 2015-4-3 06:09 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3. If Not Application.Intersect([b3:d1000], Target) Is Nothing Then
  4.     Set rng = Sheets("花名册").[a:a].Find(Target, lookat:=xlWhole)
  5.     If Not rng Is Nothing Then Target = rng.Offset(0, 1) Else Target = "该号无人"
  6. End If
  7. Application.EnableEvents = True
  8. End Sub
复制代码

Book1.zip

5.78 KB, 下载次数: 0

回复

使用道具 举报

 楼主| 发表于 2015-4-3 06:57 | 显示全部楼层
谢谢2个高手师傅的回答,您们的代码正是我所希望的,我的表达不清楚,但是2楼的师傅很能理解我的意思,但能否再增加一个功能,就是当出现改号无人之后,在单元格内输入的数字变空白,再次谢谢2个师傅的帮忙。
回复

使用道具 举报

发表于 2015-4-3 14:34 | 显示全部楼层    本楼为最佳答案   
qiongmei 发表于 2015-4-3 06:57
谢谢2个高手师傅的回答,您们的代码正是我所希望的,我的表达不清楚,但是2楼的师傅很能理解我的意思,但能 ...

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  If Target.Column > 1 And Target.Column < 5 And Target.Row > 2 Then
    If Application.CountIf(Sheets("花名册").[a:a], Target) = 0 Then
         MsgBox "该号无人": Target = ""
     Else
        Target = Sheets("花名册").[a:a].Find(Target)(1, 2)
    End If
  End If
Application.EnableEvents = True
End Sub

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 15:32 , Processed in 0.261272 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表