我正在尝试重构我的VBA代码.我很习惯在基于Java的IDE中使用重构多年.VBA编辑器是否支持任何重构或是否有任何加载项?MZ Tools没有任何此类功能.
我希望能够至少执行以下操作:1.重命名变量2.将过程拆分为子过程以使代码更具可读性3.将变量的范围从全局更改为过程,反之亦然
我目前正在使用Workbooks.Open处理目录中包含的大量文件.但是打开和关闭这些文件会使文件出现在任务栏中,我希望避免不断闪烁.
我得到了一个建议,我可以CreateObject用来创建一个新实例,因为它打开一个隐藏的新Excel实例.
在性能方面打开新工作簿的两种方式之间是否还有其他差异?
另外,我应该只使用一个使用Excel创建的实例CreateObject来打开所有工作簿,还是需要为每个必须处理的工作簿创建一个实例(这似乎浪费了大量的内存和更低的速度)?
我认为模式是名称空间实例,因此在2个不同模式下创建的同一个表是从数据库的角度来看的2个不同的对象.我的一位同事声称模式只不过是一个安全容器,因此我们可以在不同的模式中创建相同的表.这是真的?
免责声明:我已经阅读了关于堆栈溢出和互联网上的快照和版本控制主题的所有内容.我的要求不是审计跟踪或数据库级快照的版本跟踪.我花了一个多星期的时间自己研究并思考可能的选择.对不起,我可能错过了一些链接 - 如果我的问题的解决方案已在其他一些帖子中讨论过,请指出我.
它有点长; 请多多包涵.
下面是这样的情况:我们正在尝试创建一个通用设计,以在事务数据库中存储事务数据的快照,并保留参考数据的修订历史记录.
作为业务流程的一部分,用户可以按下按钮来发布某个对象.为了便于说明,我们假设用户可以在协商开始之前从供应商发布提案.然后,在通过协商过程的不同时间点,用户可以发布提议数据.该提案包含预算,销售目标和许多其他项目.快照提案时,必须为所有链接的实体创建快照.最后,在谈判之后签订合同.此时,必须创建合同的完整快照.并非合同中的所有实体都存在于提案中 - 存在大量重叠的实体,但提案和合同中附有唯一的实体.
我们必须保留这些已发布的版本和最新的活动版本.已发布的版本可在网站上获得,供供应商和管理团队参考.并非所有已发布的版本都在网站上提供,但最新发布的提案和最新发布的合同始终在网站上提供.该网站还必须从同一数据库填充.
此外,财务用户可以决定仅对预算进行快照,销售经理可以对销售目标进行快照.因此,快照可以多种粒度使用.
我们还需要跟踪主数据的版本.随着时间的推移跟踪关键主数据列的所有更改是业务要求.例如,我们有与销售目标相关的区域信息.该地区的名称可能会更改,我们希望跟踪这些更改.我们假设在提议时,区域的名称是R1,并创建快照.然后,该区域的名称将更改为R2,然后创建其他2个快照.我们希望能够在这些时间点将销售目标链接到正确的区域名称,而不一定是最新的区域名称.
我们在建模方面具有一定的灵活性,因为我们有一个事务数据库和一个数据仓库数据库,我们可以决定将这些信息存储在事务数据库或数据仓库数据库中.
这是我们的设计.我们有一个出版物表,其中包含有关已发布数据的基本信息 - 发布者以及发布对象的日期,原因和类型(提案或预算或销售目标).
我们将快照存储在与原始数据相同的表中.因此,提案快照将与提案表中的实时提案一起存储.我们在每个必须发布的表中都有一个名为Publication ID的列.此列是Publication表的FK.如果Publication ID为null,则该记录是活动版本.
我意识到这个帖子非常冗长.因此,我没有列出场景细节,而是想到在思维导图中快速总结设计注意事项.

现在有两个我们倾向于的解决方案 - 两者都会存储所有数据的快照,无论它是否已经改变.在保持表结构完整的同时仅保持增量将需要非常复杂的存储过程,该存储过程必须在任何快照对象的每次插入/更新时运行.我不想沿着这条路走下去,因为这需要更长的时间,而且音量也不是那么大.
解决方案1:每次发布一个对象(如提议或预算),我们将填充XML树并将其保留在数据库中.只需要在网站上提供最新版本,很少需要旧版本.鉴于此,由于使用XML,我是否会遇到大的性能问题?我们使用SQL Server.数据量并不大.
解决方案2:所有事务表都具有发布ID,参考数据将具有开始和结束日期.每当发布一个对象时,我们都会复制所有事务记录并将发布ID放在那里,我们将复制所有参考数据记录并将快照日期作为结束日期.这将允许我们在发布过程之外对参考数据进行正常版本控制.
我需要有经验的人士就这两种方法的缺点以及是否还有其他更好的方案提出意见.
database-design static-data database-replication transactional-database
我试图将多个非连续范围的值复制到一个数组中.我写了这样的代码:
summaryTempArray = .range("A2:D9,A11:D12,A14:D15").Value
Run Code Online (Sandbox Code Playgroud)
但它只复制第一部分(A2:D9).然后,我尝试了以下内容,我得到错误 - "对象_全局失败的方法联盟" - 我使用联合的方式有什么错误吗?
summaryTempArray = Union(.range("A2:D9"), .range("A11:D12"), .range("A14:D15")).Value
Run Code Online (Sandbox Code Playgroud) 我有一个我创建的数组来存储错误记录,它有以下元素:序列号,文件名,错误类型,错误单元格,错误单元格值
到目前为止,我已经像这样声明了我的数组,然后我在后面填充这些值.
Dim errorArray() As String
Run Code Online (Sandbox Code Playgroud)
但理想情况下,我希望序列号是一个正确的整数,但它会被转换为字符串.我不知道如何正确地声明这一点,以便我可以为第一个元素使用Long数据类型,为下一个元素使用字符串,为最后一个元素使用变量.
I am quite new to Python though I have had experience in Java before.
I have the following code to convert a score into an interval delta (as part of a Spaced Repetition System (SRS) program I am implementing). This code looks ugly and not very readable. Typically I would have used a switch statement in Java. But in python I could not find an equivalent. Hence I have written this code which produces the result. But I want to …
我需要存储一堆电子邮件地址,每个地址都有一个标签(主要业务,二级业务等)
我有两种方法:
我倾向于倾向于解决方案2 - 任何意见?
我按地区列出了具有销售价值的客户列表.我想根据销售价值创建所有客户的总体排名,并根据区域内的销售价值对客户进行排名,并使用排名来计算分数.有没有办法在Excel中执行此操作?
公式或VBA代码对我有帮助.
我正在为一堆列创建列标题。我想用下面这样的方式来完成它们 - 但我无法得到正确的语法。有人可以帮忙吗?
Range("AB1:AE1").Value = ("UnitPriceUSD","TotalCostUSD","UnitPrice", "TotalCost")
Run Code Online (Sandbox Code Playgroud) 我试图跳过记录,这些记录的值为零或为空.截至目前,我有以下代码明确检查两者,但我觉得第二次检查是多余的.但我想确认我是对的,以便我可以删除IF的第二部分
IF (CellInValue(RowInCrnt, ColInCrnt) = 0 Or CellInValue(RowInCrnt, ColInCrnt) = "") Then
Run Code Online (Sandbox Code Playgroud) 我有一个使用索引和匹配函数填充的列,当找不到该值时,它会产生一个N/A值.我希望能够通过特殊值替换列中的所有此类错误值.我想在VBA代码中执行此操作.有帮助吗?
我不想用IF逻辑重写函数.