我想实现这样一个功能Q列是出货前原始的数据,出完货之后在R2输入数据,在Q列中查询相同的数据,使之变色并把值附在对应的R列中。
解决方案 »
- 如何通过ADO对象为一个access数据库(mdb文件)添加一个查询?
- 我知道了另外一个软件的窗口句柄我如何把我的内容传到窗口里!
- 如何让自己做的控件具有vb自带控件相同的鼠标事件
- 关于解压缩的问题
- 用MAPIMessages控件发邮件,发何发送多封邮件?
- 继上一次《疯狂坦克》后,再发布一个“台球”游戏片段,
- 这么简单为什么会overflow啊!
- 如何改变windows 自带的 HeaderControl 和 ScrollBar 的背景色
- 很郁闷阿 与pictureclip有关!!
- 控件问题~!简单.谁来拿分?不够可加.
- VB6.0 DataGrid 控件排序
- 小弟想写First、Previous、Next、Last四个按钮,来移动MSHFlexGrid的记录
现在在写宏命令,下午吧,我给你完成的代码+使用说明.
如果用excel自带的函数处理不了的话我就给你写一个宏.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 2 Or Target.Column <> 18 Then Exit Sub '不是R2单元格则退出
If Len(Target.Value) = 0 Then Exit Sub 'R2单元格空则退出
Dim r
Set r = Columns("Q:Q").Find(Target.Value) '在Q列查找
If r Is Nothing Then
MsgBox "输错了!" '没找到
Else
Cells(r.Row, r.Column).Interior.ColorIndex = 3 '找到后将背景色设为3(红色),可改变
Cells(r.Row, r.Column + 1).Interior.ColorIndex = 3
Cells(r.Row, r.Column + 1) = Cells(r.Row, r.Column)
End If
Set r = Nothing: Range("R2").Select
End Sub
++1
写的很好,但是对楼主来说可能不实用.(对不起lz,那天下午有重要事情要做,所以没来及给你写代码)这次我引用6楼的代码给你写一个实用版的,6楼不要见怪
lz按照我的操作进行
首先,在选中R2单元格,点击 "视图(Alt+V)">>"工具栏">>"控件工具栏">>出会先一个浮动的工具栏,点击一下"文本框",然后在R2单元格中画一个跟单元格差不多大的文本框(注意调整大小,能够看到输入的字为号),然后点击右键,"查看代码",会弹出"VB编译器",删除里面的代码将一下代码拷入
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Dim r
Set r = Columns("Q:Q").Find(TextBox1.Text) '在Q列查找
If r Is Nothing Then
MsgBox "输错了!" '没找到
Else
Cells(r.Row, r.Column).Interior.ColorIndex = 3 '找到后将背景色设为3(红色),可改变
Cells(r.Row, r.Column + 1).Interior.ColorIndex = 3
Cells(r.Row, r.Column + 1) = Cells(r.Row, r.Column)
End If
'Set r = Nothing: Range("R2").Select
Set r = Nothing: TextBox1.Text = "": TextBox1.Select
End If
End Sub保存,这样你在R2的单元格中输入,然后回车,看看是不是匹配的效果出来了呢.注:为尊重原代码作者,代码修改很少,望见谅!
哪里不适用,难道非要多一个控件才实用么?Excel本身的事件就行了,何必要多次一举呢?在R2单元格输入后回车即可查找,为什么要多用一个TextBox呢?不明白。LZ在另一个帖子中提到的输入一个字符不提示错误和保存的问题,下面代码一并解决:Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 2 Or Target.Column <> 18 Then Exit Sub '不是R2单元格则退出
If Len(Target.Value) = 0 Then Exit Sub 'R2单元格空则退出
Dim r
Set r = Columns("Q:Q").Find(What:=Target.Value, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows) '在Q列查找
If r Is Nothing Then
MsgBox "输错了!" '没找到
Else
Cells(r.Row, r.Column).Interior.ColorIndex = 3 '找到后将背景色设为3(红色),可改变
Cells(r.Row, r.Column + 1).Interior.ColorIndex = 3
Cells(r.Row, r.Column + 1) = Cells(r.Row, r.Column)
End If
Set r = Nothing: Range("R2").Select
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = TrueEnd Sub
也非常感谢你 我之前已经按照z_wenqian 的编写了, 那天没有等到你来 , 呵呵 !