我在vba中求和单元格有问题。 我需要使用单元格(a,b): Range("A1").function="=SUM(Range(Cells(2,1),Cells(3,2)))" 但它不起作用。
我想在Excel中得到一个范围的行号,但我无法find一个方法来获得它。 我使用下面的代码: Private Sub Worksheet_Change(ByVal Target As Range) Dim nr As Integer Set nr = Target.Row End Sub 当我运行它时,我得到: 编译错误:所需的对象 我也尝试用以下replaceTarget.Row: Target.Cells(1, 1).End(xlUp).Row Target.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Target.End(xlUp).Row Target.Offset(0, 0).Row 但是,这些似乎都没有工作:( 有没有人有什么想法是什么导致错误?
“并排查看”和“同步滚动”使比较2个电子表格比以往更容易。 但是,没有“同步切换选项卡”function,所以如果切换到其中一个工作簿中的其他选项卡并继续滚动,则同步滚动变得非常有趣。 那么,我不应该抱怨,因为这一切都是手动完成的,我应该明智地使用这个function。 作为一个懒惰的开发人员,我想编写一些代码来挖掘自己的能力:我可以编写一个macros来自动化并行模式下对等窗口上的工作表切换吗? 它分解为2个步骤: 我怎么知道一个窗口,最有可能的ActiveWindow,是在并排模式? 如果是这样,我怎么知道哪个窗口是它的同行? 我做了我的功课。 看来Excel对这个function不是很友善。 有3种方法 BreakSideBySide() CompareSideBySideWith(WindowName) ResetPositionsSideBySide() 和1个布尔属性 SyncScrollingSideBySide 关于这个function的Windows集合,但是不足以解决我的问题。 有没有人有任何想法如何实现这一目标? 或者,这确实是不可能的? 先谢谢你。
我有一个运行了很长时间(可能几天,它执行数据采集)的Excel VBAmacros。 它最初是为Excel 2003编写的,并具有自定义工具栏和菜单。 我最近更新它使用RibbonXML使用function区界面。 当macros运行时,我想禁用一些界面元素(如“启动testing”),并启用其他(如“停止testing”button)。 我遇到的问题是,只有在macros代码运行完成后才能处理对ribbon.invalidate的调用。 你可以用一个简单的testing程序很容易地看到这个效果 Sub test() ribbon.Invalidate DoEvents Sleep (5000) End Sub function区“getEnabled”callback中的debug.print将被视为仅在5秒睡眠结束时执行。 有什么办法强制一个ribbon.Invalidate被激活,然后呢? ::编辑1 :: 我已经创build了一个小的演示工作簿来解释这个问题: http : //www.bodgesoc.org/Button_Demo.xlsm ::编辑2 :: 一个不同的论坛的成员find了一个解决scheme,虽然这是一个稍微丑陋的。 我想这可以现在被标记为“回答”,但一个更优雅的解决scheme,将不胜感激。 Application.ScreenUpdating = False Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)" Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",True)" Application.ScreenUpdating = True
我有一个基于Excel的应用程序依赖于我使用ADO(Microsoft ActiveX数据对象6.1库)连接到几个不同的数据库。 数据库驻留在区域服务器上,并且在build立初始连接时有开销,所以我将连接caching在一个Scripting.Dictionary对象中以供重用。 Private moConnCacheDict As Scripting.Dictionary 当我使用kdb + qodbc.dll数据库驱动程序时,我意想不到的行为。 我可以按预期方式连接和重用多个数据源(Oracle,Sybase,Access)和一个KDB数据库实例。 但是,如果创build第二个KDB数据库连接并对新数据集执行查询,则不pipe数据是合法的,都不返回数据。 Recordset.BOF = TRUE and Recordset.EOF = TRUE 它似乎执行良好,领域是可见的。 与以前的区域服务器的连接似乎仍然存在,我可以成功检索驻留在原始服务器上的数据,尽pipe事实上如果我看一下, Recordset.ActiveCommand.ActiveConnection.Properties.Item("Extended Properties") ,是新的连接string。 KDB +连接string使用以下语法: DRIVER=kdb+;DBQ=XXXXX;UID=XXXXX;PWD=XXXXX; 我已经包括了核心的VBAfunction作为例子: Private Function ExecuteQuery(sDBName As String, ByRef oRst As ADODB.Recordset, Optional bDeleteConnection As Boolean) As Boolean Dim oDBConn As ADODB.Connection Dim sSql As String 'delete connection If bDeleteConnection […]
我的主要固定机器是一个运行Win 8.1 64位和Office 2013 32位Windows窗口框。 我开发了一个具有VS2013function的32位DLL,我通过Excel VBA包含了这个function。 函数在Windows上正常工作。 然后,我有一台MacBook Pro在Parallels 8下运行Windows 8.1 64位和Office 2010 32位。我似乎无法在本Mac下使用我的DLL中的函数。 我如何尝试: 将我的DLL文件复制到Parallels下的新文件夹C:\MyTools 。 在VBA中加载DLL时参考了这个文件夹。 我的VBA代码从DLL加载函数看起来像这样 Declare Function MyDLLfunction Lib "C:\MyTools\MyDLL.dll" (ByVal s As Double) As Double 我也试过双斜杠\无济于事 在我的工作表上使用Parallels中的这个function时,不希望出现的结果是在单元格(#VALUE)中显示了一个错误代码。 这是相当Excel 2010不兼容的DLL一般(不能相信),或者是在Mac上正确引用的DLLpath的问题? 我以为C:\MyTools\MyDLL.dll会工作,因为这是我在Parallels的Windows资源pipe理器中看到的文件。 还是我的Parallels 8过时了?
我在Excel 2003中遇到了一个奇怪的问题,当在一个既是隐藏的,又是过滤范围的一部分的单元格中search值时,Range.Find方法失败。 要清楚的是,这是有问题的方法调用: Cells.Find(SearchString, LookIn:=xlFormulas, LookAt:=xlWhole) 如果包含SearchString的单元格仅仅隐藏,则Range.Find起作用。 如果包含SearchString的单元格只是过滤范围的一部分(但不隐藏),则Range.Find将起作用。 如果包含SearchString的单元格被隐藏(通过filter或其他方式),则AND是过滤范围的一部分,则Range.Find将失败。 各种Excel网站和论坛上的许多消息都声称指定“LookIn:= xlFormulas”会强制Range.Find在隐藏的单元格中进行search。 虽然无意义,但如果SearchString位于仅仅隐藏的单元格中,那么这似乎是正确的。 如果单元既是隐藏的,也是已过滤范围的一部分,则失败。 请注意,如果单元格被filter隐藏,则无关紧要。 例如,您可以search已过滤范围的标题 (filter本身永远不会隐藏该标题),但如果该标题碰巧位于已隐藏的列中,则Range.Find将失败。 有什么Excel方法可以可靠地search单元而不用考虑它们是否隐藏和/或是filter的一部分?
我有一个名为travels.xlsm的工作簿。 在ThisWorkbook我有这个代码: Private Sub Workbook_Open() MsgBox "hello" Application.Calculation = xlManual ActiveWorkbook.RefreshAll 'refresh the querytables without recalculating Application.Calculation = xlAutomatic End Sub 而这个代码在UDFs模块中: Function hasHyperlink(rng As Range) As Boolean hasHyperlink = rng.Hyperlinks.Count End Function 当活动工作表包含使用我的用户定义函数的条件格式时打开文件时, Workbook_open()子将不会执行。 当活动工作表在条件格式化中不使用此function时,closures工作簿时,请保存并再次打开 – 按预期方式执行。 这有点奇怪 我不想在closures工作簿之前closures特定工作表上的工作簿或调用Workbook_BeforeClose()子来激活该“安全”工作表。 任何人有解决scheme的想法? 这是在Excel中的错误?
当一个API定时器触发closures时,我有一个工作簿在closures时崩溃了Excel。 编辑:下面的链接中的工作簿除了计时器和退出模块没有什么,它具有相同的行为,所以它不是内容的问题。 https://www.dropbox.com/s/x0xdwgj5h34ctdk/Book1.xlsm?dl=0 工作簿closuresExcel崩溃几秒钟后。 我已经尝试closures定时器,取消隐藏所有表单,卸载表单…所有对象都设置为Nothing 。 我正在做的就是Workbooks(ThisWorkbook.Name).Close SaveChanges:=True ?? !! 从UserForm调用相同的子没有问题。 工作簿closures,而没有Excel崩溃。 如何解决这个问题? Sub ApplicationExit() ' Call UnloadAllForms ' DoEvents ' Sleep 1000 ' Call StopCloseTimer 'DoEvents 'If Application.Workbooks.Count = 1 Then ' Workbooks(ThisWorkbook.Name).Save ' Application.Quit 'Else DoEvents Workbooks(ThisWorkbook.Name).Close SaveChanges:=True 'End If End Sub 定时器触发的代码是; Sub TimerCalled() If CloseTimerValue = "" Then Call Reset_CloseTimerValue DoEvents […]
在对VBA列做文本之后,我的数据如下所示: 1995 (1) (23:00) Math 0630 0830 Break 0930 1000 English 1200 1200 Lunch 1300 1330 Free 一旦我运行其余的代码,我的数据如下所示: 1995 (1) (23:00) 0630 Math 0830 0930 Math Break 1000 1200 Break English 1200 1300 English Lunch 1300 1330 Lunch Free 为了便于理解,“0630 MATH 0830”在一个单元格内,等等。 我的问题是现在我需要的数据看起来像这样: 1995 (1) (23:00) Math 0630 0830 Break 0930 1000 English 1200 1200 […]