[英]Excel - Refresh and Validate Data From SQL (VBA)
我正在使用Office 2013和SQLServer 2008 R2。 我有一个Excel VBA proc,可将销售佣金列表插入数据库。 列之一是SalesRepID,显然必须有效。 在撰写本文时,我们有一个相当静态的销售团队,但此后我们又收购了另外两家从事专业性工作较少的公司,因此现在的销售团队有很大的变化。
当前方法在已排序的命名范围中具有销售repID和名称的列表,然后用作验证条件:在Excel的下拉列表中为用户提供了销售代表的列表,当他们选择一个时,将使用VLookup插入隐藏单元格中的SalesRepID。 然后将其用于插入操作。
我现在想做的是给用户一个刷新按钮(理想情况下在打开时运行刷新)。 一些开票人在周末在家工作,因此这需要脱机工作(很明显,如果添加了新的销售代表并且他们没有刷新,他们将看不到新的销售代表)。
我不想在用户的物理计算机上定义诸如ODBC源之类的任何内容
我正在尝试找出解决此问题的方法。 一种方法是添加一个刷新按钮,该按钮将执行查询,插入当前销售代表列表并将范围更新(或使用动态范围),使其成为当前返回的记录数。 (我假设我可以更新命名范围的地址,或者如果从SQL查询插入数据,则动态范围将更新)
例如:
初始范围
1 Tom
2 Dick
3 Harry
SalesReps范围= A1:B3
用户点击刷新:删除旧范围内容。 插入新清单
新范围
1 Tom
2 Dick
3 Harry
4 Fred
SalesReps范围= A1:B4
谁能想到一种更好的方法?
问候
标记
尝试此动态范围
Dim LastRow as integer
LastRow = Sheets("yoursheet").Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:B" & LastRow).name = "SalesReps"
该代码以一种不太直观的方式工作。 Cells(Rows.Count, "A")
在工作表A列中找到最后一个单元格(行1048576或其他内容)。
End(xlUp).Row
等效于从该单元格按ctrl + up并返回包含信息的第一个单元格的行号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.