我试图逐渐改变一个单元格的背景颜色为黑色,我发现Range.Interior.Color方法返回一个表面上是任意的长。 查看MSDN上的文档,这个数字代表什么几乎没有。 有没有办法从这个长期返回RGB值。 我实际上需要RGB(红,绿,蓝)function的反面。
在开始之前,这里有一些历史: 在Excel中创buildVBA,打开并读取三(3)个Excel文件(包括自己),并将数据input到图表/表格/graphics到PowerPoint演示文稿中。 这个版本运行的很好。 VBA由一个用户表单启动 修改后的代码以适应传递给我的要求。 当在一个特定的幻灯片中加载一个graphics时,这个会导致对象“ChartData”的VBA方法“激活”错误。 这些数据是从VBA开始的表单中传输的。 我无法稳定地重新创build这个错误,直到我开始保存当它询问时启动脚本的Excel文件。 现在我能。 没有VBA驻留在PowerPoint演示文稿中。 testing的用户第一次体验错误。 我不。 但是,在成功或失败运行之后,我会在保存Excel书籍后进行进一步的迭代。 屏幕行为我发现错误时注意到: 只有在保存启动过程的Excel后才会发生,并且在重新创build错误时再次testing该过程。 PowerPoint演示文稿成为“激活”应用程序,而VBA在后台运行 发生在同一张幻灯片和图表上(是的,在PowerPoint中使用对象标签)。 当发生错误并且中断代码时,我无法使用“文件”菜单closuresPowerPoint或Excel。 我必须使用右上angular的'Red X'closures。 色带和标签也是不可用的(不要对点击事件作出反应)。 微软确实要求保存选项。 我试过了: 遍历代码,明确closures对象后,他们已被打开,不需要。 改变ScreenUpdating的位置等应用程序进程 这是它旅行的function。 它在trpChartData.Activate为特定的graphics(这是shapeName): Function insGraphInfo(ByVal numOfSlide As Integer, ByVal shapeName As String, ByVal cellToMod As String, ByVal valToIns As Variant) As Variant 'Inserts data into a CHART TYPE graph On Error […]
我正在运行Excel的两个单独的实例,我试图将数据从一个工作簿中的范围复制到另一个。 我有这个代码: Sub CopyValues() Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") Dim Src As Range Dim Dst As Range Set Src = xlApp.ActiveSheet.Range("A1:A9") Set Dst = Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A9") Src.Copy Dst End Sub 它不会返回任何错误,但它不会复制值,也试过这最后一行 Src.Value = Dst.Value 仍然没有做什么 我的VBA技能不太好,刚开始学习2周前。
我应该从Excel导出一些大的数据范围到Powerpoint,每张幻灯片一页,当然,我应该把分页符,以避免“孤儿”行或列。 我正在尝试通过读取HPageBreaks.Count和VPageBreaks.Count来检查具有给定缩放的垂直和水平多less页,然后手动定义每个中断的位置。 这个想法是在每个页面上具有大致相同的宽度和高度。 当我一步一步地debugging我的代码时,它运行的很好,逻辑看起来不错,但是如果我“自由地”运行它,分页符就完全closures了。 添加一些MsgBox指令,我可以看到,当我读HPageBreaks.Count(或垂直)时,我得到了错误的值。 (如果我手动执行代码,我可以检查正确的代码)。 search许多论坛,我看到一些丑陋的解决方法,如强制重置PaperSize(ws.PageSetup.PaperSize = ws.PageSetup.PaperSize)。 在尝试了一些之后,看起来效果更好的是在更改PageSetup之前closuresPrintCommunication,然后再打开它。 这在我的大多数表单上运行良好,但是在真正大的表单上(〜750行×80列,几乎所有的表单都是公式),它根本就不是。 这里的代码摘录如下: 'Reset page breaks .ResetAllPageBreaks 'Set minimum acceptable zoom factor Application.PrintCommunication = False 'This is the ugly workaround .PageSetup.Zoom = 60 Application.PrintCommunication = True MsgBox "Zoom = " & .PageSetup.Zoom 'Only for debugging 'Calculate the number of pages in width Application.PrintCommunication = False NPagesWide […]
我试图写一个Excel(2010)的macros,在某些时候将不得不确认存在某个文件(doc / pdf)在公司的SharePoint站点上。 该文件可通过Internet Explorer访问(所有权限授予用户)。 我有一个直接链接到该文件。 我不需要打开它,只要检查它是否在那里。 如果这是一个本地文件,我会使用Dir()来检查文件是否存在。 但是,这不适用于URI。 我尝试了一个基于GET方法通过objHttp,但我收到的唯一的答复是一个wepage,说明“我无权查看此页”[标签]。 这是可行的吗?
我真的不知道这个错误意味着什么…我试图使用代码来select一个数据透视表中的子头之一下的所有行。 我得到运行时错误1004“无法获得透视表类的PivotFields属性”。 这里是代码: Sub ttest() Dim pt As PivotTable Set pt = Sheets("Report").PivotTables("PivotTable1") pt.PivotFields("Row Labels").PivotItems("CL").DataRange.Select End Sub
我有一个Excel电子表格,有很多公式和数据可以跟踪。 我有一个小的macros,可以find一个选定的单元格的先例,但是我喜欢使macrosrecursion,以便我可以find所有的先例。 例如,将焦点设置到单元格并运行此function将突出显示该单元格,然后突出显示该单元格的先例,然后突出显示这些单元格的先例,然后突出显示先例… 我现在遇到的问题是我不确定逃生条件应该是什么。 我遇到了一些无限循环的问题,并不熟悉recursion足以找出一个可靠的解决scheme。 下面是我正在使用的一些代码(正确)find不适用的先例: Sub FindClosedWbReferences(inRange As Range) Rem fills the collection With closed precedents parsed from the formula String Dim testString As String, returnStr As String, remnantStr As String testString = inRange.Formula testString = RemoveTextInDoubleQuotes(testString): Rem New line Set ClosedWbRefs = New Collection Do returnStr = NextClosedWbRefStr(testString, remnantStr) ClosedWbRefs.Add Item:=returnStr, Key:=CStr(ClosedWbRefs.count) testString […]
在Excel中保存为XLSM文件的文件不再是有效的ZIP文件,无法编辑function区。 2014年5月23日或之前保存的XLSM文件可以重命名.ZIP并进行编辑。 2014年5月23日后保存的XLSM文件无法重命名.ZIP和编辑,而是生成错误消息,指出该文件是损坏的存档。 Windows资源pipe理器和WinZip都会生成相同的错误情况,尽pipe错误信息略有不同。 是的,文件中有macros; 但即使打开一个旧的文件与macros(和VBA)禁用,并立即保存作为一个新名称生成一个损坏的文件。 我也在我们公司的其他两台机器上进行了testing,结果相同,所以在我的工作站上不是腐败。 Office诊断报告EXCEL没有问题。 任何想法的原因或解决办法? 更新 让我们清楚我的testing过程: 我将5月23日保存的XLSM文件重命名为.ZIP; 这将创build一个压缩文档,WinZip和Windows资源pipe理器都可以成功打开。 然后我撤消重命名,使文件再次XLSM。 我在EXCEL-2007中打开上面的文件, 不要启用macros或VBA 。 我用一个新的文件名保存为一个XLSM文件。 我将步骤(2)中保存的文件重命名为.ZIP文件。 此文件不再在WinZip或Windows资源pipe理器中打开,但会生成上面的错误消息。 我在其他两位同事的工作台上重复上面的第一步到第三步 – 完全相同的结果。 更新#2 这个问题似乎是以某种方式与文件相关的,因为像XLSM一样保存一个空的工作簿仍然可行。 我会调查更多。
使用Ron de Bruin的RangeToHTML函数,我将一个范围粘贴到Outlook电子邮件中。 但是,看起来多余的空行被粘贴到电子邮件中,如下所示: 我已经确认Source:=TempWB.Sheets(1).UsedRange.Address行只能正确抓取数据本身而不是多余的行。 我也确认RangetoHTML()的input范围也是正确的。 我唯一的猜测是.ReadAll方法是在文件中添加一个额外的行,但我不知道如何debugging。 这里是我用来简单参考的RangetoHTML函数: Function RangetoHTML(rng As Range) ' By Ron de Bruin. Dim fso As Object Dim ts As Object Dim TempFile As String Dim TempWB As Workbook Application.ScreenUpdating = False Application.EnableEvents = False TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 'Copy the range and create […]
我只是清理我的工作簿,我已经使用下面的代码来巩固我的PivotCaches(我有大约200清洁之前)。 Sub changeCache() Dim ws As Worksheet Dim pt As PivotTable Dim pc As PivotCache Dim first As Boolean On Error Resume Next For Each ws In ActiveWorkbook.Worksheets ws.Activate For Each pt In ActiveSheet.PivotTables If first = False Then Set pc = pt.PivotCache first = True End If pt.CacheIndex = pc.Index Next pt Next ws […]