用于删除电子表格中

时间:2015-07-04 05:42:16

标签: excel-vba vba excel

我的电子表格设置为“只读”,大约有8000行,其中包含各种合同上的项目详情(以及其他一些随机数据)。每份合约都列出了50到300件物品,我必须定期为各种合同运行报告。目前,我打开电子表格并按“D”列中的合同进行过滤,并删除除了我要保留的合同之外的所有其他行。

我想使用宏和vba代码自动执行此操作,因此当我运行宏时,它会显示一个InputBox并要求我为报告提供合同名称。当我输入合同名称时,例程将删除所有其他合同行以及不包含InputBox中指定的合同名称的任何其他数据行(在“D”列中)。

我是vba的新手,并尝试将下面的代码放在一起,但我知道它不正确并且无法正常工作(它实际上是在查找字符串“strName”而不是InputBox值,我也希望它能够删除除InputBox值之外的所有内容。)

Sub Contract_Selection()

Dim strName As String    
strName = InputBox("Enter Contract Name.", "CONTRACT SELECTION")
If strName = vbNullString Then Exit Sub

With ActiveSheet
    .AutoFilterMode = False
    With Range("d1", Range("d" & Rows.Count).End(xlUp))
        .AutoFilter 1, "strName"
        On Error Resume Next
        .Offset(1).SpecialCells(12).EntireRow.Delete
    End With
    .AutoFilterMode = False
End With

End Sub

任何人都可以帮助使用正确的代码来执行上述操作吗?

由于 伊恩

1 个答案:

答案 0 :(得分:1)

使用变量时,变量名称不带引号,即strName而不是" strName"。

此处的另一个问题是您要过滤以显示与该字符串匹配的值,然后删除这些项。您需要显示与字符串不匹配的所有项目。

获取正确语法的一个好建议是记录执行所需AutoFilter的宏,然后查看记录的代码。这将显示过滤器采用"<> ContractId"的形式。要在宏中使用此功能,您需要使用连接来加入"<>"用你的变量。在VBA中,连接使用&符号如下:    NewVariable =" SomeString" &安培;其他变量& " SomethingElse" 您可以根据需要混合变量和固定字符串。

这应该有效:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>

</persistence>