Tag: vba

在VBA中的子string

我有不同的单元格中的多个string CO20: 20 YR CONVENTIONAL FH30: 30 YR FHLMC FHA31 我需要从1的子string到':'的索引,或者如果这是不可用的,直到结束(string3的情况下)。 我需要帮助写在VBA中。

在Excel 2013 VBA中引用命名单元格的正确方法是什么? (我知道我搞砸了)

我有一个单元格(好吧,有一堆,但我只是看着一个)名为“类”。 这是Excel的网格符号“C10”。 当我引用单元格时,我的代码完美工作 Range("C10") = "Value" 但是当我使用 Classes = "Value" 它什么都不做。 那么,通过名称引用一个命名单元格的正确方法是什么?

如何使用VBA设置Excel单元格的背景颜色?

作为VBA程序的一部分,我必须根据它们的值(基本上是一个健康监视器,绿色是好的,黄色是边界和红色是危险的),将某些单元格的背景颜色设置为绿色,黄色或红色。 我知道如何设置这些单元格的值,但是如何设置背景颜色。

是一个stringVBA中的数组,可以通过迭代?

在VBA中是一个string数组? 例如,我可以像在C / C ++中一样遍历它吗? 做这样的事情: char myArray[10]; for (int i = 0; i < length; i++) { cout << myArray[i]; } 在VBA中相当于什么? 这不是我所期望的。 从来没有真正尝试在VBA之前操纵很多string! 🙂

展开每个列单元格的列单元格

我有3组不同的数据(不同的列) A栏动物(5种) B栏的水果(1000种) C栏中的国家(10种) 有了这3个数据集合,我想得到5×1000×10共计50k对应的元素在列。 EFG(与每个水果和每个国家对应的每个动物)。 可以通过手动复制和粘贴值来完成,但这需要很长时间。 有什么办法通过VBA代码或自动化它吗? 有没有像上面介绍的无限数据集的通用公式? 请让我知道,如果有什么不清楚。 这里是一个较小的数据例子,结果应该如何变化:

有没有一种方法让Excel VBA IDE与TFS 2010一起工作?

我有团队成员需要能够检查在Excel 2007/2010中创build的VBA模块/类。 我希望能够使用一些TFSfunction,理想情况下在VBA IDE中。 我不想检查Excel文件作为文物。 我见过MSSCCI提供商从MS 下载 。 我不认为在这种情况下Power Toys的Windowsshell扩展是有帮助的,因为我不想为开发人员创build一个额外的进程来从VBA项目维护工作中导出和/或导入类和模块文件。 问题:有人可以提供一种在Excel 2007中使用MSSCCI提供程序的方法(甚至是Excel 2010)吗? 你认为这只能用自定义的VBA插件吗? 更新: 我想过使用一种方法,比如制作一个自定义的VBA插件,以及添加一些对TFS客户端对象模型进行基本调用的命令。 Codeproject从另一个问题find这个post,这次寻找同样的东西,但对于SVN而不是TFS。

Excel VBA编译抛出一个“用户定义的types没有定义”的错误,但不会触犯代码行

症状 编译Excel VBA项目时,这是一个特别的症状。 发生以下错误: User-defined type not defined 但是,产生这个错误的代码没有被编译器突出显示,所以我不能确定这个问题。 我已经知道,并已经尝试 这是一个“用户定义的types没有定义”的错误,我曾经看到过,有些简单的问题,例如命名As Strig而不是As String 。 然而,这个特定的错误只是在Debug > Compile VBAProject菜单选项popup,当错误消息框popup时,它不会突出显示错误发生的代码行。 经过大量的研究,我发现这个bug可能与缺less的引用有关,我已经排除了所有需要的引用和工具箱对象。 为了确保我没有丢失任何明显缺less的Dim语句,我添加了Option Explicit到所有的代码页(包括表单),以确保没有丢失任何东西。 运行编译时仍然显示错误。 还有这个已知的错误 ,说明这个问题已经发生,因为VB6项目使用二进制兼容性: closures二进制兼容性并编译该项目。 Visual Basic将突出显示包含未定义的用户定义types的代码行。 解决问题后,二进制兼容性可以重新打开。 我发现这篇文章通过这个问题和答案 ,但是,我不能在标准的Excel VBA编辑器中find此选项。 帮助拯救我和他人的理智! 我从Google的search和其他问题知道,我不是唯一一个有这个问题的人。 我已经尝试过通过代码手动,但有太多的线路,可行的做到这一点。 有没有办法在Excel VBA项目中closures二进制兼容性? 如果人们无法debugging他们需要改变的东西,人们会如何发现这个有害的代码行? 任何帮助将是可爱的! 先谢谢你。 编辑: 我find了违规的代码行,所以我的问题得到解决 在删除特定行后,问题仍然存在 – 它是代码中引用的表单上的一个mispelt控件名称。 这仍然不能解决你将如何去发现这个问题的问题的特定问题。 当这个错误发生时,我们是否能够find一个很好的方式来find有问题的代码,以便其他人在将来可以避免这种痛苦?

如何在Excelmacros中使用JavaScript?

这里有一个非常酷的差异类: http://code.google.com/p/google-diff-match-patch/ 我之前在一些网站上使用过,但现在我需要在 Excelmacros中使用它来比较两个单元格之间的文本。 但是,它只能在JavaScript,Python,Java和C ++中使用,而不能在VBA中使用。 我的用户仅限于Excel 2003,因此纯.NET解决scheme将无法工作。 手动将代码翻译成VBA会花费太多时间,难以升级。 我考虑的一个select是使用.NET编译器(JScript.NET或J#)编译JavaScript或Java源代码,使用Reflector输出为VB.NET,然后将VB.NET代码手动降级到VBA,给我一个纯粹的VBA解决scheme。 在使用任何.NET编译器进行编译之后,我放弃了这个path。 假设我可以得到一个可用的.NET库,我也可以使用ExcelDna( http://www.codeplex.com/exceldna )这个开放源码的Excel加载项来简化.NET代码集成。 我最后的想法是托pipe一个Internet Explorer对象,发送它的JavaScript源,并调用它。 即使我得到这个工作,我的猜测是这将是泥泞缓慢和凌乱。 更新:find解决scheme! 我使用了接受的答案在下面描述的WSC方法。 我不得不稍微更改一下WSC代码来清理差异,并给我一个VBA兼容的数组数组: function DiffFast(text1, text2) { var d = dmp.diff_main(text1, text2, true); dmp.diff_cleanupSemantic(d); var dictionary = new ActiveXObject("Scripting.Dictionary"); // VBA-compatible array for ( var i = 0; i < d.length; i++ ) { dictionary.add(i, JS2VBArray(d[i])); } return […]

如何清除内存,以防止“内存不足错误”在Excel VBA中?

我在一个大的电子表格上运行VBA代码。 如何清除程序/调用之间的内存以防止发生“内存不足”问题? 谢谢

推荐使用VBA的IDE

是否有推荐的IDE用于开发提供合理的错误报告和代码完成的Excel VBAmacros? 目前,我正在使用Excel 2007附带的“Microsoft Visual Basic For Application”IDE,但到目前为止,这并不理想。 即使是Vim或Emacs的插件也会很棒。