Tag: vba

从Excel / VBA调用Scala函数

我知道使用C ++可以创build包含某些函数的DLL文件,然后将其导入到Excel中(例如,通过VBA)。 让我们来看看下面的C ++函数 double __stdcall square_it(double &x) { return x*x; } 我们假设它被合并在square.dll中,以便我们可以使用下面的VBA导入 Declare PtrSafe Function square_it Lib "square.dll" (ByRef x As Double) As Double Private Sub TestSub() MsgBox square_it(4.5) End Sub 所以我的问题是:是否有可能在Scala中编写一个函数,然后以类似的方式从VBA调用它?

Excel VBA运行时错误“424”对象删除行时需要

我试图比较2表(Sheet1&Sheet2)之间的单元格值,以查看它们是否匹配,如果它们匹配将Sheet1中的匹配值移动到一个预先存在的列表(Sheet3),然后删除Sheet1中的值。 我在Excel VBA中使用反向For循环,但一切正常,直到我开始使用newrange1.EntireRow.Delete删除行的newrange1.EntireRow.Delete 。 这在VBA中引发了'424'对象所需的错误,我花了几个小时试图解决这个问题,我不知道为什么会出现这个问题。 我不正确地select行吗? 物体? 如果有人能指出我正确的方向,将不胜感激。 这是我的代码: Sub Step2() Sheets("Sheet1").Activate Dim counter As Long, unsubListCount As Long, z As Long, x As Long, startRow As Long counter = 0 startRow = 2 z = 0 x = 0 ' Count Sheet3 Entries unsubListCount = Worksheets("Sheet3").UsedRange.Rows.Count Dim rng1 As Range, rng2 As Range, cell1 […]

停止VBA从调用目标函数两次进行评估

我有麻烦得到VBA的Evaluate()函数只能执行一次; 它似乎总是运行两次。 例如,考虑下面的简单例子。 如果我们运行RunEval()子程序,它将调用EvalTest()函数两次。 这可以通过打印在即时窗口中的两个不同的随机数字来看到。 如果我们使用Evaluate而不是函数调用另一个子例程,行为将是相同的。 有人可以解释我如何得到评估执行目标函数而不是两次? 谢谢。 Sub RunEval() Evaluate "EvalTest()" End Sub Public Function EvalTest() Debug.Print Rnd() End Function

Excelmacros – 太多的行延续

我有一个“大”的SQL查询(如200行)… dim query as string query = "…………………………….." & _ "…………………………….." & _ …. Like a lot lines later… "…………………………….." function query,"sheet 1" 当我这样做时,Excel表示“太多的行延续”。 避免这种情况的最好方法是什么?

通过VBA打开csv文件(性能)

显然这个问题已经被问了很多次了。 正常程序: Workbooks.Open (ActiveWorkbook.Path & "\Test.csv") 不会正确parsingcsv(在1单元格中有很多行) thx Lernkurve我可以使用他的function得到它的权利: 打开分号分隔的CSV文件 Sub ImportCSVFile(filepath As String) Dim line As String Dim arrayOfElements Dim linenumber As Integer Dim elementnumber As Integer Dim element As Variant linenumber = 0 elementnumber = 0 Open filepath For Input As #1 ' Open file for input Do While Not EOF(1) ' Loop […]

运行macros打开文件并将其保存为值的macros – 运行时错误1004

我一直得到这个1004运行时错误。 我已经减less了一些编程,所以不是那么节目。 我想这可能与使用Excel 2010来保存.xls文件有关。 不确定。 Auto_Root.xls打开时,运行Sub auto_open(),打开Panel.xls 面板打开并运行Sub Update(),它依次在不同的目录中打开7个文件,全部名为Auto_Update.xls Auto_Update.xsl打开并运行Sub Flat,每个打开一系列文件,并将自己的平面副本保存到另一个目录中。 我打开了7个Auto_Update.xls文件中的每一个,并独立运行它们,并且没有错误地运行。 当我从Auto_Root运行它们时,我得到一个运行时错误1004.并且CurrentWB.Save在其中一个文件上突出显示。 我什至取代CurrentWB.Save CurrentWB.SaveAs文件名:= TargetFile,FileFormat:= xlNormal,并收到相同的运行时错误。 附上是我有的代码。 AutoRoot.xls!自动更新 Sub auto_open() Application.CutCopyMode = False Dim PanelFilePath As String Dim PanelFileName As String Dim PanelLocation As String Dim PanelWB As Workbook PanelFilePath = "D:\umc\UMC Production Files\Automation Files\" PanelFileName = "Panel.xls" PanelLocation = PanelFilePath & Dir$(PanelFilePath & […]

macros的循环执行VBA 1004错误

任何人都可以给我一个为什么我会收到以下代码1004错误的感觉? 如果不清楚,我试图循环所有不是我命名的工作表的纸张,并尝试select一个特定的范围,并将其复制并粘贴到编译的“定量表” Dim ws As Worksheet Dim x As Integer Dim y As Integer Dim a As Integer Dim b As Integer Set ws = Worksheets("Quant Sheet") x = 1 y = 3 a = 3 b = 2 Worksheets("Quant Sheet").Activate For Each ws In ActiveWorkbook.Worksheets If (ws.Name <> "Quant Sheet") Then ws.Range("A3").Select Selection.Copy Sheets("Quant […]

Excel vba:错误的参数数量或无效的属性分配集合添加

我已经得到了一个 错误的参数数量或无效的属性分配集合 现在错误很长时间了,但是搞不清楚是怎么回事。 我在这个类里有一个类和一个Collection ,还有一个Sub为这个集合添加了值。 Private sumLosses As Collection Private Sub Class_Initialize() Set sumLosses = New Collection End Sub Public Property Get getSumLosses() getSumLosses = sumLosses End Property 主模块内部: For Each clientCopy In clientsColl clientCopy.getSumLosses.Add 200 'error clientCopy.getSumLosses.Add (200) 'error Next 为什么这会失败,我如何将这些项目添加到类的集合?

将工作表传递给子例程

我有以下代码: Private Sub SortWorksheet(ByVal sheet As Worksheet) Dim sStartColumn Dim iTopRow Dim sEndColumn Dim iBottomRow Dim Rng As Range Dim sRange1 As String . . . 我正在调用这样的函数: SortWorksheet (DestSheet) 我在上面的行上得到一个运行时错误,说“对象不支持这个属性或方法” DestSheet是一个工作表variables。 为什么这个代码不工作?

如何在Excel VBA编辑器中禁用自动退格

我刚刚开始在Excel中学习macros和VBA编程,但是一旦我打开编辑器并开始编写它,就会让我回到最后一个单词的末尾,例如: 我想写'Sub Entername()',但是如果我不写得够快,它会像:'SubEnterName()'这是不正确的。 我不介意例如自动填充。 endSub()或一些自动更正,但这只是令人生气。 我怎么把这个关掉。 谢谢吉米。