VBA - 基于选择的不需要的列表计数表示更改

Posted

技术标签:

【中文标题】VBA - 基于选择的不需要的列表计数表示更改【英文标题】:VBA - Unwanted Listcount Representation Changes Based On Selection 【发布时间】:2013-07-09 15:54:41 【问题描述】:

我正在使用 Access 2003 开发一个应用程序,用户可以在该应用程序中动态生成查询,然后浏览带有 GUI 定义查询结果的列表框。我允许列标题显示结果中哪些算作额外行。

返回的行数受列表框 65535 的物理限制。我还有一个列表框,在文本框中显示 Row X Of Y Selected

用户每次点击列表框时都会生成消息,事件处理程序中的代码是:

Me!txtRowCount.Value = "Row" & (Me!listDynamicSearchResult.ListIndex + 1) & _ “的” & (Me!listDynamicSearchResult.ListCount - 1) & “已选”

通常代码显示第 X 行,共 65534 行已选择,因为我选择不计算列表框中的标题。随着用户接近最大值,Y 值 65534 变为 65535 并保持在该最大值,直到我重新查询或清除表单。

那么,为什么 listcount 属性直到我接近最大值才显示合适的值?

【问题讨论】:

另外,实际的listcount值从65535变为65536。 【参考方案1】:

该行为可能类似于记录集和记录集中计数所发生的情况

Before we get into the examples, you need to understand how RecordCount works. 
It does not tell you the number of records in a recordset. Rather, it tells you
the count of records accessed in the Recordset. They may or may not be the same
thing. 

来源:http://www.baldyweb.com/RecordCounts.htm

一种解决方法可能是使用DCount,但我猜在 64k 行上调用可能会很昂贵

【讨论】:

我认为您的解决方案会给出准确的结果,但每次选择的聚合函数似乎都是一场噩梦。归根结底,它只差一分,我只是好奇它为什么这样做。 我没有找到更好的,所以我选择这个作为答案。

以上是关于VBA - 基于选择的不需要的列表计数表示更改的主要内容,如果未能解决你的问题,请参考以下文章

Vba 到基于多列的自动过滤器

当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询

VBA If / Then基于记录计数

如何基于选择列表过滤交互式网格?

记录一次帮策划写的基于VBA的数据转化工具

报告格式化 VBA 代码