Tag: vba

克服VBAinput框字符限制

我用来收集文本InputBox的当前函数显然不能接受超过255个字符,而且我需要能够收集更多的东西吗? 有一个参数或不同的function,我可以用来增加这个限制?

使用数组设置Excel范围格式

在过去,我使用了一个变体数组来填充多个Excel单元格的范围。 我想知道,有没有办法做单元格格式相同的事情? 我宁愿不逐一细胞,这将是很好的,以尽量减less获得Excel范围的电话数量…

通过VBA访问DLL

如何从VBA(Excel)访问第三方DLL中的函数? 另外,有没有办法看到所有的function是可用的DLL内?

如何从Excel VBA中释放进程中的COM服务器对象

如何强制Excel(2007)VBA释放对COM服务器对象的引用? 我已经在Visual Foxpro 9 SP2中编写了一个inprocess(单实例DLL)COM服务器,它是从我的开发机器上的Excel 2007 VBA代码实例化的。 Excel似乎是持有一个COM对象/ DLL的引用,即使我设置=无。 这可以防止由于“文件访问被拒绝TestCOM.dll”消息重buildDLL,直到我退出Excel,每次我想要进行更改和testing时都很痛苦。 我已经把代码编译成了一个非常简单的testing设置:VFP9项目(TestCOM)只有一个.prg文件,内容如下 DEFINE CLASS TestClass As Session OLEPUBLIC ENDDEFINE VBA代码如下: Sub Test() Set objTest = CreateObject("TestCOM.TestClass") Set objTest = Nothing End Sub 我已经尝试删除在VBA项目中的COM服务器库的引用,但这没有任何区别。 我已经试过,没有DIMing的对象variables,它没有任何区别。 我曾尝试创build一个新的VFP DLL项目,但问题依然存在。 如果我作为一个INPROCESS / DLL生成VFP应用程序/ DLL并运行VBA代码,我得到这个问题,但如果我build立它作为一个OUTOFPROCESS / EXE并运行VBA代码,我不会得到这个问题。 我在COM对象清理中发现了一个非常类似的问题,只不过我的COM服务器是用Visual Foxpro 9 SP2编写的,而与C#相关,而OP没有详细解释他们是如何解决问题的,所以我不知道如何解决它; 如果这是可能的。

(Excel VBA)如果单元格值等于“”然后显示/隐藏图像

我正在使用Excel电子表格,当select下拉框的值时,会popup一个图像,如果select了另一个值,它将隐藏当前图像并popup与select相关的图像。 我发现了一些使用坐标的图片和图片定位太耗时的方法; 这不完全是我想要去的路线。在使用StackOverflow之前,我已经做了相当多的研究,到目前为止似乎没有任何工作。 以下是我想要实现的。 我试图保留电子表格中的所有图像,增加了另一个级别的挑战,但我相信有一种方法可以做到这一点,因为excel插入EX时分配图像的数字。 图片9 Sub Main() If Range(G11).Value = "anything" Then Picture1 show Picture2 hide End If End Sub 任何帮助是极大的赞赏。 谢谢

是否有可能在一个Excel单元格中做多个彩色的文本?

我有strInfostring,其中包含“员工John Maybach”。 我如何使“员工”部分成为黑色文本,“约翰·迈巴赫”部分是红色的? “员工”部分将始终保持不变,但员工姓名部分将会改变,使其可能是由2部分组成的名称(John Doe),或3部分的名称(John Allen Doe),或者只是名字(约翰)。 我希望单词“员工”始终是黑色的,但单元格中名称部分的其余部分是红色的。 这可能吗?

如何获得Excel的date作为一个date而不是一个string时做CopyFromRecordset

我有一个来自SQL Server的SQL查询,它以格式“YYYY-MM-DD”的forms返回date。 如果我将这种格式的dateinput到单元格中,则会将其识别为date。 但是,当我用CopyFromRecordset填充工作表时,它似乎被视为一个string。 任何使用单元格的公式都会先将其转换为date。 例如,如果我的date是在列A中,而且我创build了一个填充公式= A1 + 0的新列B,那么该公式将返回我的date作为date。 问题:我使用Recordset数据做了一些事情,其中​​一个是数据透视表。 数据透视表没有看到我的date为date。 例如,我不能将它们分组为date。 我的黑客是做一个新的列,这基本上是= A1 + 0我要改变我的macros来自动添加一个零,但我想知道是否有办法从CopyFromRecordset执行的那一刻起。

在Excel中使用VBA将多个元素从一个页面复制到另一个多页面

我有一个用户窗体中的多页面。 在运行期间,用户可以随时select添加x个页面。 每个页面的元素将是相同的。 我想知道是否有一种方法来复制这些元素,或者我是否需要为每个新页面重新创build这些相同的元素? 如果是这样,我该如何在页面上指定要放置元素的位置?

逐步通过(F8)代码突然执行所有代码?

我写的macros(在另一台机器上)在我的电脑上突然变得奇怪。 我在Excel 2010环境中编写了代码,并试图通过相同的代码。 每次我这样做,几行后,其余的代码立即执行。 如果我设置了一个断点,它将停止。 有时候,我可以在再次尝试之前再行一行。 是什么赋予了? 我没有在网上find答案…因此我的第一篇文章在Stackoverflow。 感谢任何提示! 这使我的生活困难。 更新:我现在已经回到原来的编程环境,并通过代码步进没有任何问题。 所以这一定是我的Excel设置中的东西! 我无法弄清楚它可能是什么。

计数不同版本的Excel中的单元格时不正确的值

我看到一些SO用户在尝试使用Cells.Count一些变体时遇到了问题; VBA代码在某些情况下会引发溢出错误。 作为参考,请参阅此答案的评论: 我认为这将工作,但我得到一个“溢出”的错误,它指向我的代码“如Master.Cells.SpecialCells(xlCellTypeVisible).Count> 0然后”—它似乎是不是过滤的东西特别 – user1556069 和这个答案 : 这是onyl工作(和Cells.Count不工作),因为后者使用了一个整数,16位,最大值65,536,整个电子表格返回一个numbr更大? – fast_code 我假设在后台的某个地方,VBA试图将单元数强制为一个小整数(16位)或长整数(32位)。 一个Excel 2007工作表的单元格计数将溢出这两个数据types。 不幸的是我现在无法将其隔离,因为我没有Excel 2007的方便副本,实际上不能重现您的错误。 – mwolfe02 试图理解这一点,我试图重现自己,并尝试将Cells.Count分配为整数时溢出。 这对Integer数据types的值太大是有意义的。 在Excel 2003和2010中使用下面的代码,当试图分配一个Long或Variant时,我得到了一个数字结果。 Option Explicit Sub testInteger() Dim i As Integer i = Cells.Count 'Overflow Debug.Print i 'Doesn't get this far… End Sub Sub testLong() Dim l As Long l = Cells.Count Debug.Print l 'Prints […]