如果一个字段为空/空白,则尝试使用 VBA 删除整行

Posted

技术标签:

【中文标题】如果一个字段为空/空白,则尝试使用 VBA 删除整行【英文标题】:Trying to use VBA to delete an entire row if one field in null/blank 【发布时间】:2013-07-11 18:35:03 【问题描述】:

所以我正在做一个项目,我将一个 excel 文件导入 Access,但是当我进行导入时(excel 中的表与 Access 中的表标题相同)我倾向于得到一堆额外的行,因为在我的 excel 文件在大多数单元格后面都有函数,这就是为什么即使它看起来是空的,即使没有实际输入任何内容,Access 也会传输行。

所以我的问题是,有没有一种方法可以在 Access 中自动使用 VBA,一旦导入了 excel 文件,它可以循环遍历特定表中的所有行并根据特定条件删除整行。就像在一行中有一个空字段一样,它将删除整行。这将为我节省大量时间,而不是手动在表格中搜索空白字段并自己删除行。

我确实有使用 VBA 的知识,但我不确定如何去做,我试图使用 DELETE SQL 语句,但不知道如何正确执行,因为我需要它在 VBA 中.

【问题讨论】:

为什么要注意你是女性很重要? 您要在导入之前或之后删除空白行吗? 在我导入之后,由于我不会是唯一一个导入 Access 的人,我希望它在导入 Access 后自动执行 那么您应该能够在 Access 中创建一个 DELETE 查询,使用您选择的条件,然后通过 VBA 模块调用它。 问题是我不确定如何在 Access 中创建 DELETE 查询。我不知道开始的格式。 DELETE 查询是否只是常规的 SQL 语句?还是我必须更改它,因为我必须使用 VBA?我将在哪里放置/创建 DELETE 查询? 【参考方案1】:
    创建一个 SQL 查询,将您要删除的行拉回。 根据您的喜好完成查询后,进入 SQL 视图 查询,并删除 FROM 子句之前的所有内容。 改为在此处键入 DELETE。保存查询。所以它应该看起来像“DELETE FROM blah WHERE blah, blah, blah”

所以现在您有一个查询,它将删除您想要的行。现在,要让它通过 VBA 运行(请注意,您可以通过在“查询”窗格中双击它来手动运行它),只需将以下行放在您希望它运行的位置。

docmd.OpenQuery "yourDeleteQueryName"

请注意,您的DeleteQueryName 应替换为您的删除查询名称。

【讨论】:

快速问:您在 Access 中的何处创建 SQL 查询?我知道我想要的标准类型,只是不知道在哪里创建它...... 使用查询向导?还是查询设计? 两者都行。似乎您以前从未创建过删除查询,所以我的建议是在您尝试任何操作之前创建数据库的副本。另外,也许谷歌如何创建一个。 好的,谢谢,我会试试的。而且我之前从未在 Access 中使用过删除查询,但我确实知道如何编写 SQL 语句,只是需要帮助。谢谢

以上是关于如果一个字段为空/空白,则尝试使用 VBA 删除整行的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从主菜单打开一个表单,其中一个字段为空/空白

如果整个范围为空白,则删除整行?

如果单元格为空白,则清除 VBA 中另一个单元格代码的内容

VBA 防止用户输入表单中出现空字段

使用 vba 添加新记录时跳过空白字段

使用 IsNumeric 删除数据行