Tag: excel vba

Excel中大数的十进制到二进制转换

我在Excel表中有一些大数字,我想将它们转换为二进制例如12345678 965321458 -12457896有人可以帮助我如何做到这一点。 谢谢。

有没有办法破解Excel VBA项目的密码?

我被要求更新一些Excel 2003的macros,但VBA项目是密码保护,似乎缺乏文档…没有人知道密码。 有没有办法在VBA项目上删除或破解密码?

如何开发包含正则expression式的Excelmacros,以便在Windows和Mac中使用

我开发了一个使用VBScript.RegExp的Excel 2010 VBAmacros。 我的一个用户显然使用支持VBA的Excel Mac 2011,但没有VBScript.RegExp 。 我已经看到了几个职位,提到可以使用AppleScript创build自己的RegEx函数,可以由VBAmacros调用。 但是,似乎必须有一个Mac版本的Excel文件和一个Windows版本。 这并不理想。 有没有另外一种方法可以在Windows和Mac兼容的VBA中实现正则expression式?

以编程方式在VBA中创build事件侦听器

是否有可能以编程方式创build一个组合comboBox上的event method ? 在工作表上,我有一个ComboBox ,我可以通过代码得到它的名字: Dim ole As OLEObject For Each ole In ActiveSheet.OLEObjects If TypeName(ole.Object) = "ComboBox" Then ' ole.Name '<<<<<<<< here End If Next ole 我现在如何创build和分配一个ole.Name的event method : Private Sub myComboBox_Change() … End Sub 在Java中可以使用: myComboBox.setOnChangeListener(…some code of listener interface…) ;)

如何脚本Excel 2013的电子表格比较?

我正在尝试将Excel 2013的“查询外接程序”中新奇的“ 电子表格比较”function合并到VBA脚本中。 该计划是有一个macros来自动比较两个电子表格与预定义的名称,并导出所有的差异作为一个新的电子表格。 没有成功,迄今为止。 以下是我迄今为止所尝试的: 通常,要学习如何自动化一些Excelfunction,我使用Record Macro。 如果失败了,我查看可添加的引用列表,看看我是否失去了一些明显的东西。 在这种情况下,这两个都失败了。 没有代码出现与电子表格比较相关,当我logging一个macros(只有外围的东西像细胞select出现)。 并没有可加参考看起来像电子表格比较。 那么我怎样才能从VBA脚本Excel的2013电子表格比较?

如何在Excel中实现可重置,可重复使用的默认单元格值?

>>问题总结 我想在Excel中实现一个可重置的,可重复使用的默认单元格值。 我的意思是,当第二个单元更新时,有一个单元恢复到一个“默认”值,通过一个依赖于第二个单元的查找公式获得。 用户还可以select将不同的值写入原始单元格,直到第二个单元格被更新。 >>主体和细节 好的,这是情况。 此快照是多个工作表数据存储库的相关区域。 为了清晰起见,两个感兴趣的单元格为绿色突出显示,最高的可见行为第1行。 项目search单元接受各种单词或短语input,并具有数据validation,以确保只有有效的input是可能的。 数据validation是从可能的input的字母表列表中获取的,单元格有一个下拉列表选项(因此右边是小箭头)。 堆栈单元格使用下面的公式中的项目search单元格的input… =IF(COUNTIF(C3:F315,J6),VLOOKUP(J6,C3:F315,4,FALSE),"~") …其中J6是项目search单元格,范围C3:F315是同一工作表上的查找表的相关部分。 问题相关的Excel文件的快照描绘区域。 http://img29.imageshack.us/img29/4388/capturedhx.jpg 现在,这是我想在堆栈单元格中发生的… 当前function: 当在“ 物品search”单元格中input了无效的input时,会显示波浪符而不是数字。 input有效的input时,查找表中的相关编号显示在单元格中。 买入和卖出单元格也以相同的方式更新。 所需的附加function: 首先,代字号不能被覆盖。 在第二种情况下,可以通过向堆栈单元input另一个数字来覆盖“默认”号码。 当input新的input(或再次input相同的input)到项目search单元中时,默认编号(或波形符号)再次显示。 愿望清单(非必需): 如果勾选了一个checkbox(或类似的,如在相邻单元格中的是/否input),则意味着堆栈单元中显示的号码不会被任何新的“默认值”改变/影响从查阅表读入。 该号码仍然可以通过手动input新号码进行修改。 Item Search单元格目前有一个下拉字母表,列出所有可能的有效数据input。 有没有办法使用这个相同的列表来添加一个自动完成function的单元格? 也许有点像谷歌的search引擎,下拉列表出现在您键入和填充该列表的项目不断限制到那些包含您已经input的(子)string。 注意:不pipe什么值显示在堆栈单元格必须是可读的其他单元格的公式; 即“ 买入”和“ 卖出”单元格,其值将成为当前单元格中显示的堆栈单元格查找值的比率。 这可能在任何程度上? 优选地(但不排除)不需要使用macros。 本工作手册旨在分发给其他人,其中大部分被locking和保护,以避免对核心数据进行任何更改。 先谢谢你。 目前发现的信息: …但不完全解决我的问题。 我可能可以使用多个单元格来实现相同(或类似)的有效function(一个单元格保存默认值,另一个保存可能的用户input值,第三个单元格保存相关的输出值),但这不会看起来像对于最终用户来说也不是那么直观。 这本工作手册旨在分发给其他人,其中大部分被locking和保护。 – 这个答案是不可取的。 在提出这个问题之前,我在网上search了一些信息。 它说,如果我想恢复到默认值是自动的,那么在工作表变更事件例程中使用下面的代码: Private Sub Worksheet_Change(ByVal Target As Range) If […]

如何在编辑公式时突出显示(来自其他工作表的单元格)?

我正在寻找突出显示从其他表单元格(在编辑模式),但找不到任何解决scheme。 当选中一个单元格并处于编辑模式时,公式中使用的单元格将被突出显示,如果它们来自同一张表单。 例如(见下图),单元格K6从表单“数据”中select,公式中使用的单元格用红色,蓝色和紫色的矩形突出显示。 但是当公式包含来自其他工作表的单元格时,将不会突出显示。 例如(见下图),从表格“图表”中select单元格D5。 单元格使用表单“数据”中的X6单元格,但是当我们从单元格“图表”的单元格D5中编辑公式时,单元格不会高亮显示。 如果可以在单元格中编辑公式时突出显示其他工作表中的单元格,将对debugging工作表非常有帮助。 有没有办法做到这一点?

使用Python将macros注入电子表格

我有一个macros,我想要一堆现有的电子表格使用。 唯一的问题是有太多的电子表格,手工操作太耗时了! 我写了一个Python脚本来使用pyWin32来访问所需的文件,但我似乎无法find一种方法来使用它来添加macros。 一个类似的问题给了这个答案(这不是Python,但它看起来仍然使用COM),但我的COM对象似乎并没有一个名为VBProject的成员: Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls") Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) strCode = _ "sub test()" & vbCr & _ " msgbox ""Inside the macro"" " & vbCr & _ "end sub" xlmodule.CodeModule.AddFromString strCode objWorkbook.SaveAs "c:\scripts\test.xls" objExcel.Quit 编辑:链接到类似的问题引用: 注入并执行Excel VBA代码到从外部来源收到的电子表格 我也忘记提到,虽然这不是Python,但我希望类似的对象成员将通过COM对象提供给我。

将string从VBA传递给C ++ DLL

我真的很困惑从VBA传递string到C ++。 这是VBA代码: Private Declare Sub passBSTRVal Lib "foo.dll" (ByVal s As String) Private Declare Sub passBSTRRef Lib "foo.dll" (ByRef s As String) Private Declare Sub passByNarrowVal Lib "foo.dll" (ByVal s As String) Private Declare Sub passByNarrowRef Lib "foo.dll" (ByRef s As String) Private Declare Sub passByWideVal Lib "foo.dll" (ByVal s As String) Private Declare […]

最快的方法是将一列数字读入数组中

说如果我有一列数字(其中有多less可能会有所不同,但可能在1000-10000之间的任何地方),我想将它们全部读入VBA数组中,这样做的最快方法是什么? 很明显,我可以创build一个大小为10000的数组,并做一个for / while循环,但是有没有比这更快的方法?