我正在使用Office 2013和SQLServer 2008 R2。我有一个Excel VBA proc,它将销售佣金列表插入到数据库中。其中一列是SalesRepID,显然必须是有效的。写这篇文章的时候,我们有一个相当静态的销售团队,但是我们已经收购了另外两家不那么专业化的公司,所以现在销售人员的变化相当大。
当前方法在已排序的命名范围中有一个销售repID和名称列表,然后将其用作验证标准:在Excel的下拉列表中为用户提供销售代表列表以及何时选择一,它使用VLookup将SalesRepID插入隐藏的单元格中。然后在插入操作中使用它。
我现在要做的是给用户一个刷新按钮(最好在打开时运行刷新)。有些小工作者在周末在家工作,所以这需要能够离线工作(显然,如果添加了新的代表并且他们还没有刷新,他们就不会看到新的代表)。 / p>
我不想在用户的物理机上定义类似ODBC源的内容
我试图弄清楚解决这个问题的方法。一种方法是添加一个刷新按钮,该按钮将执行查询,插入当前的销售代表列表并更新范围(或使用动态范围)作为当前返回的记录数。 (我假设我可以更新命名范围的地址,或者如果从SQL查询插入数据,动态范围将更新)
例如:
初始范围
1 Tom
2 Dick
3 Harry
SalesReps范围= A1:B3
用户点击刷新:删除旧范围内容。插入新列表
新范围
1 Tom
2 Dick
3 Harry
4 Fred
SalesReps范围= A1:B4
有人能想到更好的方法吗?
此致
标记
答案 0 :(得分:1)
尝试使用此动态范围
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并返回包含信息的第一个单元格的行号。