我的电子表格设置为“只读”,大约有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
任何人都可以帮助使用正确的代码来执行上述操作吗?
由于 伊恩
答案 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>