问题标签 [listobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
11361 浏览

vba - VBA - 遍历一系列工作表中的所有 ListObject

我有一个表格条件格式宏(感谢 Jeeped),我想扩展它以遍历一系列工作表中的所有表格。我怀疑这不是最有效的方法,但它是我能拼凑起来的最好的方法,即使那样它也不起作用。到目前为止,我被困在以下两点。非常感谢任何帮助!

1)设置 ws 等于多个工作表代号(例如Set ws = Worksheets(5,6,7)

2) 设置没有运行时错误的范围Set myRange = ws.ListObjects.DataBodyRange会产生“运行时错误'438':对象不支持此属性或方法”

当前代码是:

0 投票
2 回答
13775 浏览

excel - 将一组值粘贴到 ListObject(Excel 表)上会破坏 Listobject

在我的一个工作表中,我有一个

应该用一组值替换表中的数据

这可能是无关紧要的,但在这样做之前,我调整了列表对象的大小(我逐行扩展,因为如果我一次这样做,我会覆盖我的表格下方的内容而不是移动它。)

如果要插入任何数据,我会覆盖这些值

BAM,我的表/ListObject 不见了! 为什么会发生这种情况,我该如何避免?

0 投票
1 回答
238 浏览

vba - 使用 byref 类型不匹配

以下代码创建了一个编译时错误消息“类型不匹配”:

也试过:

还:

只需朝正确的方向快速推动即可使此 JustAdd 子例程正常工作

0 投票
3 回答
8029 浏览

excel - 如何将多个行从一个 Excel 表(ListObject)附加到另一个?

我有两张桌子:

结果表:

Table_2 是一个临时表 (ListObject),它使用数据连接查询数据库中的条目。

Table_1 是一个表 (ListObject),它充当条目的集合列表。它是分开的,因为它 (1) 缩短了 Table_2 中的查询时间,并且 (2) 有一些编程编辑。

我有将 Table_2 复制到 Table_1 的 VBA 代码,然后更新 Table_2 的连接字符串以不包括日期在 Table_1 范围内的条目。结果是 Table_2 只拉取新数据。

我的代码(正确)将数据从 Table_2 复制到 Table_1:

如果 Table_2(新条目)只有十几个条目,这将非常有用。有时,Table_2 会有几百个条目,实际上需要 20 分钟才能完成。我怀疑这是因为我正在对 .Copy 和 .Paste 进行几百次迭代。

有没有办法批发:复制所有 Table_2 并使其成为 Table_1 的一部分?我觉得我想做的事情应该只需要 1 秒以编程方式执行,而不是 20 分钟。我没有条件或例外。我想要 Table_2 中的一切,这应该很容易。我可能会以错误的方式去做。任何帮助表示赞赏。谢谢。

0 投票
1 回答
1292 浏览

excel - ListRows.Add() 过滤列表时出错

我有以下从 Worksheet_Change 事件调用的代码(适用于 Excel 2007 和更高版本):

基本上,当用户在 Excel 表中进行某些更改时,会在当前行下创建一个新行,其中包含数据的副本,并且有几个 ID 字段交叉引用两行,所以我知道它们是相关的。

这工作正常,但是当列表被过滤并发生事件时,我在 ListRows.Add 上收到此错误:

Run-time error 1004: cannot shift cells in a filtered range or table

我理解这个错误,我想我可以解决它,先移除过滤器;但这对用户很粗鲁,迫使他们事后重做过滤器(这可能很复杂)。

有什么可以优雅地解决这个问题?是否有可能以某种方式创建新行但保留(或自动恢复)过滤器?

0 投票
1 回答
2930 浏览

vba - 如何使用 B 列中的参数对 ListObject VBA 中 A 列上的行进行排序

我在 Excel 中有一个表格,它是通过数据库中的 Listobject 宏填充的。

我可以通过以下代码对表格进行排序:

“状态”有多个整数值,范围从 1 到 100。我想做的是根据行的状态和另一列对行进行排序。我遇到的问题是每个状态的“第二列”排序是不同的。

我想要创建的是一个类似“Gant”的表格,其中不同的日期列按每个状态的降序排序。例如 (DD-MM-YYYY)

等等这可能吗?

0 投票
2 回答
1423 浏览

vba - Excel 2010、VBA 和 ListObjects 小计未在表更改时更新

因此,具有这种结构(从 A1 开始 - 显示片段 > 运行):

我编写了一些代码来在 ListObject 中转换该范围 (A1:D6),添加了 4 个新列和小计:

现在,如果您在新列的任何单元格上写一些数字,奇怪的是 TOTAL(小计)没有更新;但是如果您保存文件并重新打开它,它将起作用并且总数将更新。我错过了什么?

我已经尝试在 TotalCalculation 之后移动 ShowTotals,但行为保持不变。

如果我们现在从头开始重建工作表,并在应用前面代码中的样式后添加这段代码用于列 b、c 和 d 的小计:

我注意到 b、c 和 d 的小计有效,但 Tot1、Tot2 等无效。

似乎唯一的解决方法是在添加 ListObject 与创建它的引用之前构造原始表。有人知道更好的解决方案吗?

提前致谢 :)

0 投票
0 回答
513 浏览

c# - VSTO Excel 互操作 ListObject.AddEx (2010+) 到 ListObject.Add (2003) 转换

作为我正在开发的 Excel 帮助实用程序的一部分,我正在将大型常用 Excel 电子表格移动到 MS SQL 以提高性能以及通过 SSIS 包进一步验证数据。

作为其中的一部分,我编写了一个基本的数据库连接类,它模仿数据 --> 从其他来源 --> 从 SQL Server 按钮。我使用 Office 2013 的副本在家中进行了这项工作,并且我预计会出现一些转换问题,主要是 Excel 互操作 API 已更改并且无法选择升级到 Office 2010 或更高版本。我的主要问题似乎是新命令 AddEx 的转换:

MyListObjects.AddEx(ExcelAPI.XlListObjectSourceType.xlSrcQuery, MyConnection, Type.Missing, ExcelAPI.XlYesNoGuess.xlYes,StartRange);

到 2003/2007 版本按照 MSDN 添加(https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listobjects.add(v=office.11 ​​).aspx )

//2007 命令//

我得到的例外是:

我最初的想法是更改 ExcelAPI.XlYesNoGuess 枚举,所以我尝试手动设置值,但随后遇到编译器错误。我尝试一次删除一个参数Type.Missing来跟踪罪魁祸首,但这似乎导致的错误多于解决的错误,尽管 MSDN 声明这些都是可选的。

连接字符串组成如下:

方法测试调用参数:

完成后对此进行了更多研究。看来我的代码在家工作得很好,修改后的添加。但是从工作中我仍然得到:

0 投票
1 回答
1452 浏览

arrays - 循环遍历表列并将最大值或最小值存储在数组变量中

我正在尝试使用 VBA 循环遍历 excel 中的表,并将每列的最大值存储在数组变量中以供以后在程序中使用。

我采取了许多类似于下面代码片段的方法,但都没有成功。供参考:mainTable是脚本前面定义的 Public ListObject 变量mainCols,也是之前定义的 Public Long 变量,它存储 的宽度mainTable

上面的代码执行没有错误,但总是返回0

重要的是我不对列/表位置进行硬编码,以便用户可以复制/粘贴不同维度的数据集并运行脚本而不会出错。此外,假设用户可以在具有他们想要的任何列标题的数据集上运行它。

0 投票
1 回答
1421 浏览

vba - 如何使用 Excel ListObject 表(前列表)查找(和编辑)特定行

让我们想象一下,在ListObject表格行中,我想找到一些字符串或一些模式,如果找到,我想格式化整行。我的示例可能是通过 VBA 和 ACE OLEDB 从记录集中转储到 excelListObject表中,我想对其进行格式化:

例如我想

  1. 将表格中出现 Total 一词的整行加粗。
  2. 在 ??? 上方插入一行,表示一个组的三个字母字符串出现。

我可能会设法提出在标准非ListObject表上运行的代码并为整个工作表添加行,但我不知道如何搜索和更改ListObject表中的行。