【发布时间】:2016-01-08 21:32:59
【问题描述】:
VB 编码新手,请多多包涵。
我正在进行的一个 Windows 窗体项目(出于个人兴趣和挑战)是自动化工作流程,即进入办公室的工作将附有几个需要注意的项目。这些项目使用定制软件(无法避免)预订到 SQL 数据库中,然后输入到电子表格中。我试图在某种程度上自动化这个过程。我已经成功(在 stackoverflow 的帮助下)创建了从我的表单到 SQL Server 的连接,运行查询,将结果存储在数据集中并将第一组数据传输到我的 excel。
但是,我每天都需要在工作表中附加新项目/条目。数据库中的条目具有唯一的连续 ID 号,因此我的想法是对条目运行选择查询 > 已写入 excel 的最高 ID。
我已经确定了包含数据的最后一行(lrow),因为无论如何我都需要它...(xlsht 是我的活动工作表)
Dim lrow as long = 0
With xlSht
lrow = .range("C" & .rows.count).end(Excel.XlDirection.xlUp).row
End With
我可以使用它来识别 C6:C(lrow) 或 (C:C) 范围内的最高 ID 号,如建议的那样。电子表格数据未按 ID 顺序排列,因此仅选择该列中最后一个填充的单元格是行不通的。
使用 Application.max("C:C") 错误,因为“'max' 不是 system.windows.forms.application 的成员”,我缺乏经验意味着我还不知道如何解决这个问题!
我一直在寻找建议,但只能在 VBA 中找到代码想法,而且我缺乏知识,无法轻松翻译或理解它。有人可以指出我正确的方向吗?
非常感谢。
编辑:作为一种解决方法,直到我知道更多,我已经在电子表格中创建了一个隐藏列,其中一个单元格 (T6) 包含函数“max(C:C)”,然后我正在读取该值作为
进入我的 VB 代码 Dim maxvalue As Integer
maxvalue = xlSht.range("T6").Value
...但我想最终删除它。
谢谢
【问题讨论】:
-
如果 C1:C5 没有大的值,也许你可以使用 Application.Max(C:C)?
-
我会谨慎地指定您如何使用它,例如办公自动化、Oledb 数据提供者等
-
Karen,'很乐意提供更多信息!作为一种学习经验和兴趣,我提出尝试在工作中自动化这个过程。进入办公室的工作包含几个项目。我们使用管理程序来预订这些项目(不幸的是,这个过程无法解决),并且该程序将数据存储在 SQL 2012 数据库中。我在 VS2013 中编写了一些 VB.net 来读取该数据库并从与该作业相关的每个项目中提取三个字段以填充电子表格。然后可能会在同一个作业下提交其他项目,我正在尝试编写代码以添加...
-
...现有项下的新项。由于所有项目都保存在具有唯一连续 ID 号的数据库中,因此一旦我知道“C”列中电子表格中当前的最高数字,我就可以使用此字段仅提取新项目。由于数据在 Excel 表中没有按数字顺序保存,我不能只读取最后一个单元格...因此我对代码的需求最高。
-
这个问题实际上是关于获得一个范围内的最大值。这里的其他一切都只是噪音,可能没有帮助。毕竟,我们真的不需要知道你在做什么的细节。海事组织