2017-04-26 98 views
0

我一直在互联网上搜索哪里可以找到以下的最有效,最简单的方法:如何根据单个单元格中的文本移动整行?

我有一个包含3张电子表格:

  1. 信息
  2. 培训
  3. 离校生

在信息表中,B列包含有条件格式的验证文本。有两个验证选项:

  1. 活动
  2. 利弗

我想,一旦单元格的值从“积极”到“利弗”改变整个行会从纸张清除并转移到'莱弗的表。

我已经使用了下面的代码,它的工作原理,但是如果没有离开者,它将传输'active'的第一行。谁能告诉我有什么问题?

Sub AlexR688(x) 
    'For http://www.mrexcel.com/forum/excel-q...ific-text.html 
    'Using autofilter to Copy rows that contain centain text to a sheet called Errors 
    Dim LR As Long 

    Range("B2").EntireRow.Insert Shift:=xlDown 
    LR = Sheets("Personal Information").Cells(Rows.Count, "B").End(xlUp).Row 
    LR1 = Sheets("Leavers").Cells(Rows.Count, "B").End(xlUp).Row + 1 

    With Sheets("Personal Informaiton").Range("B2:C" & LR) 
     .AutoFilter 
     .AutoFilter Field:=1, Criteria1:="Leaver", _ 
      Operator:=xlOr, Criteria2:=":Leaver" 
     .SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Sheets("Leavers").Range("A" & LR1) 
     .SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End With 
End Sub 

其次,我想在'培训'表中做同样的事情。但是在那里,B列包含了与个人信息相关的“主动”,“离开者”。所以,一旦个人信息表栏B从'活跃'变为'离职',培训表也会改变,但我想要删除培训表中的行。第三,如果我不小心将个人信息表中的行移动到了Leavers表,是否有可能通过选择返回到“活动”单元格值,该行将移回原来的位置?

非常感谢。希望它很清楚。

+0

当和什么触发你使用子?你有一个按钮或什么? – Blenikos

+0

我创建了一个按钮,因为我不知道如何自动化它。如果单元格值从“活动”更改为“离线” – Simas

+0

vba是事件驱动型语言。为了通过运行一些代码来自动化某些东西,您需要发生一个事件。在这里,您没有表单控件,以便触发事件。所以,你将需要一个组合框或其他东西,并使用它的一个属性(如改变属性)来触发你的功能。否则,你想要的东西不能发生! – Blenikos

回答

0

这是最简单的方式

Private Sub imperecheaza_Click() 
    Dim ws As Worksheet 
    Dim Rand As Long 
    Set ws = Worksheets("BD_IR")  
    Rand = 3 
    Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000 
     If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then 
     ws.Rows(Rand) = "" '(here you will delete entire Row) 
     gksluri.RemoveItem gksluri.ListIndex 
     Exit Do 
     End If 
     Rand = Rand + 1 
    Loop 
    End Sub 
相关问题