Tag: excel vba

Excel中的VBA函数可以返回一个范围吗?

我试图做这样的事情似乎是得到一个types不匹配的错误: 在新的工作簿中: A1 B1 5 4 Function Test1() As Integer Dim rg As Range Set rg = Test2() Test1 = rg.Cells(1, 1).Value End Function Function Test2() As Range Dim rg As Range Set rg = Range("A1:B1") Test2 = rg End Function Adding = Test1()应该返回5,但是代码似乎在从test2()返回范围时终止。 是否有可能返回一个范围?

太多的不同单元格格式

我有一个大规模的文件,从头开始重新创build10张,更新了12张,原始数据加载了5张,以及报表使用了7张macros。 我最近添加了一个新表,并运行到Excel “太多不同的单元格格式”问题。 我所尝试过的 我已经阅读了一些谷歌search结果,他们说我应该简化格式,但我甚至不知道我是如何得到4000个不同的单元格格式,更不用说多less我使用哪些,所以我可以删除一些。 它也会popup一些文件运行的时间,但不是全部,直到它出现,然后每次运行时都会发生。 由于macros正在做很多工作,包括从头开始创build10张表,我不知道该怎么做。 有人知道吗 我可以运行一个macros来获取所有单元格格式的列表以及有多less个单元格正在使用它们? 他们相信一个程序,以帮助删除多余的单元格格式? 谢谢

返回的logging集closures(在DBA中通过ODBC访问mysql数据库)

长时间的观众第一次的海报。 我正在使用Excel中的前端工作数据库应用程序。 因此我使用VBA来访问MySQL数据库。 我使用的驱动程序是ODBC驱动程序(Windows),我有一个有效的连接到数据库,因为许多其他查询function良好。 我想要做的是从一系列SQL语句中返回结果,而不是试图将其全部结合成一个大规模的语句(这可能会起作用,但难以维护/理解)。 我已经将FLAG_MULTI_STATEMENTS = 67108864标志添加到了抑制驱动程序语法错误的连接string中。 但现在当我运行以下: queryDB.Open SQLquery, conn recordset (queryDB)保持closures,没有明显的错误。 sql语句可以在这里find。 我可能会产生不返回到VBA的错误,所以在这里的任何帮助将不胜感激。 注 :sql语句工作,因为我可以将该语句粘贴到phpMyAdmin ,它会返回正确(非空)的结果。 我不知道这些语句是否具体是问题,但可能是使用CREATE TEMPORARY TABLE …或者使用多个语句。 另外我猜测,驱动程序可能试图返回每个SQL语句的结果和VBA只得到第一个或东西… 编辑 :SQL语句供将来参考。 CREATE TEMPORARY TABLE tmpOrders AS SELECT o.customerName, SUM(o.Sales) AS Sales, SUM(TotalFobCost + TotalLandedCost + TotalLocalCost + TotalCmtCost) AS TotalCost, YEAR(o.deliveryDate) AS YEAR, MONTH(o.deliveryDate) AS MONTH FROM devere_costing.orders_fixed_extras AS o […]

构build撤销到Excel VBAmacros

运行它们后,Excelmacros似乎不允许使用“撤消”。 有没有办法在Excel中将undofunction复制到VBAmacros中?

等到Application.Calculate完成

我可以强制我的vba脚本等待,直到Application.Calculate完成重新计算所有的公式?

Excel VBA,从一个不活动的工作表获取范围

当我查看“Temp”工作表时,此脚本正常工作。 但是,当我在另一个工作表中,则复制命令失败。它提供了一个“应用程序定义或对象定义的错误” Sheets("Temp").Range(Cells(1), Cells(1).End(xlDown)).Copy Sheets("Overview").Range("C40").PasteSpecial 我可以使用这个脚本,但是我有粘贴它的问题 Sheets("Temp").Columns(1).Copy Sheets("Overview").Range("C40").PasteSpecial 我不想激活“温度”表来得到这个 我还可以做些什么

Excelselect与激活

VBA代码wb.Sheets(1).Cells.Select和wb.Sheets(1).Activate之间有什么区别?

在Excel-VBA中访问SQL数据库

我正在从MSDN复制一个VBA代码片段,演示如何从一个SQL查询抓取结果到Excel工作表(Excel 2007)中: Sub GetDataFromADO() 'Declare variables' Set objMyConn = New ADODB.Connection Set objMyCmd = New ADODB.Command Set objMyRecordset = New ADODB.Recordset 'Open Connection' objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;" objMyConn.Open 'Set and Excecute SQL Command' Set objMyCmd.ActiveConnection = objMyConn objMyCmd.CommandText = "select * from myTable" objMyCmd.CommandType = adCmdText objMyCmd.Execute 'Open Recordset' Set objMyRecordset.ActiveConnection = objMyConn objMyRecordset.Open […]

VBA Excel按特定列sorting范围

我有一个表可以包含任意数量的行: 正如我所说,它可以包含1或∞行。 我想通过列B中的Date单元格来sorting范围A3:D∞。我该怎么做? 问题是我不知道如何从A3select到最后一行。 我认为循环到最后一行不是一个正确的方法。 我到目前为止,它看起来像正确的,但范围是硬编码。 我如何摆脱范围的硬编码? Range("A3:D8").Sort key1:=Range("B3:B8"), _ order1:=xlAscending, Header:=xlNo

Excel VBA密码通过hex编辑器

过去我多次使用“hex编辑器修改DPB到DPx”来绕过旧的Excel VBA项目(.xls)上的VBA项目安全性,所以我一定知道该怎么做,并知道我可以做到这一点。 不过,我昨天刚试过,发现它不再起作用。 我尝试使用Excel 2011(Mac)和Excel 2003(Windows),在这两种情况下,我得到了相同的行为; 打开VBA编辑器给出了一个消息,说该项目已经损坏,该项目将被删除。 然后,VBA编辑器打开,当然,所有的VBA都从模块和工作表中除去。 我已经尝试了这种方法: 有没有办法破解Excel VBA项目的密码? (即创build一个带有已知密码的电子表格,然后在相关字段中进行复制) 但是,发现在我的“虚拟”电子表格上创build的“GC”键的长度比我希望访问的电子表格(“目标”)上的“GC”键更短。 我曾经在其他地方看过,如果“目标”键长的话,你可以把“虚拟”键放到相同的长度,但是我没有办法find相反的情况下做什么。 所以 – 我的问题; 有没有人知道,如果一个补丁已经被应用,使“hex编辑器”方法无效? 任何人都可以帮助当假键比目标键更长时该怎么办? 任何人都可以提供任何更新现场到这个问题? 编辑现在解决了这个(在某种程度上)我想我会在这里添加一个总结。 我一直没有能够得到这个在Mac Excel 2011上工作。关于将文件从filname.xlsm更改为fielname.zip并再次返回的结果导致Excel 2011拒绝识别损坏的Excel文件。 我设法通过修改.xlsm文件名到.zip,用hex编辑器编辑vbaproject.bin文件中的DPB = AND GC =值,然后保存在将.zip重命名为xlsm之前.zip文件中。 我使用了Ricko在底部给出的“testing”例子,它和ONE CAVEAT一起工作 – 我必须“填充”我的GC值,使其与我的文件中的原始长度相同。 ORIGINAL: GC="0F0DA36FAF938494849484" NEW: (TEST) GC="BAB816BBF4BCF4BCF4" (from Ricko below) NEW: (TEST) GC="BAB816BBF4BCF4BCF40000" (what i used and what worked)