Tag: vba

VBA运行时错误1004“应用程序定义或对象定义的错误”select范围时

select范围时遇到错误1004“应用程序定义或对象定义的错误”的问题。 我仍然可以select行(即Rows("21:21").select ),并在同一工作簿的其他工作表中select范围。 我不相信错误是在代码中。 也许它的一些设置我不知道? 我之前使用过相同的代码,但是由于某种原因,我不能在这个子函数中使用它(我已经评论了错误发生的地方)… Sub CopySheet1_to_PasteSheet2() Dim CLastFundRow As Integer Dim CFirstBlankRow As Integer 'Finds last row of content Windows("Excel.xlsm").Activate Sheets("Sheet1").Activate Range("C21").Select '>>>Error 1004 "Application-defined or Object-defined error" Occurs Selection.End(xlDown).Select CLastFundRow = ActiveCell.Row 'Finds first row without content CFirstBlankRow = CLastFundRow + 1 'Copy Data Range("A21:C" & CLastFundRow).Select Selection.Copy 'Paste Data Values Sheets("PalTrakExport […]

Excel VBA – 如何Redim的二维数组?

在Excel中通过Visual Basic,我通过加载到Excel中的发票CSV文件迭代。 发票是由客户确定的模式。 我将它们读入一个dynamic的二维数组,然后将它们写入另一个具有较旧发票的工作表中。 我明白,我必须扭转行和列,因为只有数组的最后一个维可能被Redimmed,然后转移,当我把它写到主工作表。 某处,我的语法错了。 它一直告诉我,我已经Dimensionalized数组。 不知何故我创build它作为一个静态数组? 为了让它dynamic地运行,我需要解决什么问题? 工作代码每个答案给出 Sub InvoicesUpdate() ' 'Application Settings Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual 'Instantiate control variables Dim allRows As Long, currentOffset As Long, invoiceActive As Boolean, mAllRows As Long Dim iAllRows As Long, unusedRow As Long, row As Long, mWSExists As Boolean, newmAllRows As […]

VBA编辑器自动删除行尾的空格

有没有办法让Excel中的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电子表格比较?

将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 […]

使用VBA和.Net自动化Excel的优点和缺点

我一直负责在Excel中创build一个财务计划工具,这将从一些自定义函数/macros中受益。 我最初的反应是使用VBA。 我以前用它来驱动Excel(比如5年前)。 但是,我开始怀疑,如果我使用VSTO会更好。 有没有人有使用这两种技术的经验,可以列出优点和缺点,以便我可以评估哪个课程是最好的。

修改Microsoft Excel中的embedded式连接stringmacros

我有一个Excel文档,它有一个macros,运行时将修改该连接的CommandText从Excel电子表格传入参数,如下所示: Sub RefreshData() ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary") .OLEDBConnection.CommandText = "Job_Cost_Code_Transaction_Summary_Percentage_Pending @monthEndDate='" & Worksheets("Cost to Complete").Range("MonthEndDate").Value & "', @job ='" & Worksheets("Cost to Complete").Range("Job").Value & "'" ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary").Refresh End Sub 我想刷新,不仅修改连接命令,而且还修改连接,因为我想用一个不同的数据库也: 就像macros使用电子表格中的值replace命令参数一样,我希望它也可以从电子表格中的值中replace数据库服务器名称和数据库名称。 一个完整的实现是不需要的,只需修改与表中的值连接的代码就足够了,我应该能够从那里得到它的工作。 我试图做这样的事情: ActiveWorkbook .Connections("Job_Cost_Code_Transaction_Summary") .OLEDBConnection.Connection = "new connection string" 但是这不起作用。 谢谢。

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

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