VBA 用Find 寻找关键词所在的行并将此行剪切到其他Sheet中

Dim K
Sheets("SHEET1").Select
K = Range("I;I").Find("天津", LookIn:=xlValues).Row
Rows(K).Select Selection.Cut Sheets("SHEET2").Select Rows(K).Select ActiveSheet.Paste Sheets("SHEET1").Select Selection.Delete Shift:=xlUp End Sub
因为刚入手,不太明白,语句可能也有些问题,请一个
VBA 用Find 寻找关键词所在的行并将此行剪切到其他Sheet中 语句

谢谢

有几个问题
1、Range("I;I") 这个地方要用 :
2、Range("I:I").Find("天津", LookIn:=xlValues)  是会报错的
正确的用法是
set rng=sheet1.Range("I:I")
rng.Find("天津", LookIn:=xlValues)
或者
在整个表里面查找
sheet1.cells.Find("天津", LookIn:=xlValues)
3.查找以后要判断有没有找到, 如果没找到也会报错
要加判断语句
If Not findcell Is Nothing Then

4、 对哪个表操作就 直接 sheet1. 后面加其他属性就可以了  不需要老用select ,
Sub 测试()
Dim findcell As Range
Dim fr%
Set findcell = Sheet1.Cells.Find("天津")
If Not findcell Is Nothing Then
fr = findcell.Row
findcell.EntireRow.Cut Sheet2.Cells(fr, 1)
findcell.EntireRow.Delete
Else
MsgBox "没查到相关内容"
End If
End Sub

追问

受益了,但是还有个问题,这个不是循环语句,只能CUT1行,那其他行的呢?

追答可以加个循环语句  DO 
                  LOOP UNTILL   findcell is nothing

追问

加完之后。所有带"天津"数据都被删除了,但是目标SHEET里只有一行数据。貌似其他行都被覆盖了。。- -#

追答

因为删除了原来的行, 第二行带天津的行变成第一行, 所以粘贴到SHEET2的时候 一直都是在第一行,你可以考虑 粘贴到sheet2的, 连续行 从1向下走, 不要用SHEET1里面FIND的行数

'findcell.EntireRow.Delete 或者这句删掉, 剪切过来空白行保留下来,不要删,或者最后再统一删空白行

191180776 加我吧, 这样回复太麻烦

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-12

你的Range("I;I") 中间是分号,应该是冒号,改过来就好。

 Sub a()
    Dim K
    Sheets("SHEET1").Select
    K = Range("I:I").Find("天津", LookIn:=xlValues).Row
    Rows(K).Select
    Selection.Cut
    Sheets("SHEET2").Select
    Rows(K).Select
    ActiveSheet.Paste
    Sheets("SHEET1").Select
    Selection.Delete Shift:=xlUp
End Sub

本回答被网友采纳
相似回答