2010-08-17 43 views
0

我有一个关于在其他工作表中引用单元格的问题。我有这个代码在VBA:引用其他工作表中的单元格。 DYNAMIC/VARIABLE

如果Application.CountIf(.Rows(Lrow),'8000')= 0和Application.CountIf(.Rows(Lrow),'9000'))= 0然后。行(Lrow)。删除

哪个能够删除任何没有字8000和9000的行。 但是,由于将来会有更新,所以如何调整代码以使excel执行的值可以是“动态的”(即不是硬核) 说,如果我在第1页的单元格(17,2)处输入一个数字,我可以怎样让Excel查看单元格地址而不是来自于SHEET的“绝对值” 2通过VBA?

谢谢。

+0

你的意思是,而不是寻找8000或9000,它寻找一些你在单元格中输入的值? – TerrorAustralis 2010-08-17 04:29:08

回答

0

你可以在你已有的代码上面添加这几行代码。这是假设您想要通过将其输入到单元格B17或B18中来更改其中任一数字。

Dim lowerBound as Long, upperBound as Long 
lowerBound = Sheet1.Range("B17").Value 
upperBound = Sheet1.Range("B18").Value 

然后用lowerBound替换'8000'并用upperBound替换'9000'。

0

您可以在源表格中添加一个列X,标题为“Condx for DELETE”,并用表示DELETE条件的公式填充此列作为布尔值 - 与您的情况类似:= NOT(OR(A2 = 8000 ,A2 = 9000))(假设值8000,9000等出现在列A中)

然后,您循环通过源表并删除列X为TRUE的所有记录。 Asuming该

  • 源已被内VBA定义为范围对象(MyRange)
  • 第一行是头行
  • 没有空单元格在第一列标题和列表
  • 的端部之间条件是在第3列

发现一个放可能看起来像这样

Sub MySub() 
Dim MyRange As Range, Idx As Integer, MyCondx As Integer 

    Set MyRange = ActiveSheet.[A1]  ' represent source data as a range 
    Idx = 2        ' asuming one header row 
    MyCondx = 3       ' asuming condition is in 3rd column 

    Do While MyRange(Idx, 1) <> "" 
     If MyRange(Idx, MyCondx) Then 
      MyRange(Idx, 3).EntireRow.Delete 
     Else 
      Idx = Idx + 1 
     End If 
    Loop 
End Sub 

这样您就可以完全透明,不需要硬编码,而且您非常灵活,不仅可以更改2个值的集合,还可以指定任何条件为业务提供服务。

希望有帮助 - 祝你好运

相关问题