Tag: vba

在Excel中枚举指定的快捷方式

我经常在Excel中创build新的macros。 将macros指定给快捷键组合时,在获取尚未使用的macros之前,需要尝试多次。 我想从VBA或任何其他可用的方法中确定所有“已用”快捷方式。

在AutoFilter中结合多个排除(<>)条件

我使用这个肮脏的黑客来解决我的问题: ' Filter managerial functions ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Head*", _ Criteria2:="<>IT*", Operator:=XlAutoFilterOperator.xlAnd ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Local Head*", _ Criteria2:="<>Resp*", Operator:=XlAutoFilterOperator.xlAnd ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Team Lead*", _ Criteria2:="<>XB*", Operator:=XlAutoFilterOperator.xlAnd 有没有办法把这三个陈述合并成一行? 一旦我有第三个标准(Criteria3)在一行Excel似乎有问题。 此外,<> Array()似乎不被支持。

奇怪的Excel VBA错误“expression太复杂”-1。#IND

在Worksheet_SelectionChange事件中有一些非常基本和简单的VBA代码,如下所示: btnB.Top = btnA.Top + btnA.Height 它在我的电脑上运行良好,但是它在我的同事的电脑上零星地工作。 似乎在表单周围5次点击中的3次会产生"Expression Too Complex"错误。 其他2工作没有抛出一个错误。 我试过了: Dim D as Double:D = btnA.Top + btnA.Height btnB.Top = D 同样的事情,有时会起作用,有时会引发错误。 当错误发生时,我打破并检查D的值是"-1.#IND" 。 我search了这个价值,并发现它意味着interdeterminate。 btnA.Top大约是11,500,所以这不是一个溢出问题。 这个问题似乎没有韵或理由。 在VB和VBA编程16年来,我从来没有见过或听说过这样的事情。 感谢任何帮助/见解。 编辑完整代码: Sub LineUpBtns() CommandButton2.Top = CommandButton1.Top + CommandButton1.Height CommandButton3.Top = CommandButton2.Top + CommandButton2.Height End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) LineUpBtns End Sub

如何使Excel VBA代码完全合格/如何规避运行时错误?

我写了一些VBA代码,dynamic设置一些图表的属性,如数据范围,打开我的Excel文件。 这是因为我用来从我的.Net项目导出Excel的库不完全支持图表属性。 我有4个图表和1个数据表在这个文件。 但是,在文件首次打开时,会显示以下错误: Run-Time Error: '-2147417848 (80010108)': Automation The object invoked has disconnected from its clients. (同样,第一次打开,警告显示该文件可能是不安全的,我手动必须允许打开,但我不知道这是否有任何关系到这个问题) 此文件的后续打开不会触发错误。 我search了stackoverflow和论坛,并发现这个微软知识库文章 基于在那里给出的build议,我试图让我的代码完全合格(例如使用Dim app As Application和Dim wb As Workbook )。 但是,这并没有解决我的问题。 违规行标有** 我的问题是: 我没有使我的代码的某些部分完全合格吗? 这个错误是否还有其他可能的原因,如果是的话,他们如何解决? 我的代码(在ThisWorkbook对象中): Option Explicit Private Sub Workbook_Open() Dim app As Application Set app = Excel.Application Dim wb As Workbook Set wb = app.ThisWorkbook […]

VBAmacros来批量更新在同一位置的多个文件

非常新,所以请帮助。 我试图批量更新静态文件夹位置中的文件,在一个文件夹中的许多文件。 我想要做的是 在Excel 2010中运行VBAmacros以获取networking位置文件夹, 打开文件夹中的第一个文件。 解除工作簿和工作表的调用,再调用另一个marco来运行更改 然后保护工作表closures文件 然后移动到文件夹中的下一个文件,直到所有文件都被更正。 我创build了marco来进行更改,这就是所谓的“编辑” 文件types是xlsm和工作簿和工作表是密码保护我怎样才能自动运行macros来转到networking位置,并在系列打开每个文件,解除保护,调用macros,然后重新保护文档closures文件,并移动到下一个文件直到他们全部更新。 Sub Auto_open_change() Dim WrkBook As Workbook Dim StrFileName As String Dim FileLocnStr As String Dim LAARNmeWrkbk As String PERNmeWrkbk = ThisWorkbook.Name StrFileName = "*.xlsx" FileLocnStr = ThisWorkbook.Path Workbooks.Open (FileLocnStr & "\" & StrFileName) Workbooks(StrFileName).Activate With Application.FindFile SearchSubFolders = False LookIn = "Network location" Filename […]

VBA中的均方根(rms)函数?

所以我正在计算我的工作表中的基本统计数据,它包括如下代码: xxx = Application.worksheetfunction。 平均 (等)等 yyy = Application.worksheetfunction。 分 (等)等 zzz = Application.worksheetfunction。 最大 (等等等等) 我的问题:是否有一个RMS等效函数,我可以简单地将它插入到代码中具有“平均,最小,最大”function的地方? 如果没有,那么寻找RMS解决scheme时最有效的方法是什么? 我希望我已经清楚地表明了目标。 我很好奇VBA是否有预定义的RMS函数,或者是否需要创build某种用户定义的函数? 〜这个我还是比较新的,所以如果没有简单的代码来写这个,我将不得不做更多的UDF的阅读。 编辑: 我有大约3万行,为了简单起见:设想两列。 A列的年份是1941年,或者是2008年的其他年份。列B是一个数字值。 我只是想把代码放在一起,给出十年的平均值,最小值,最大值和RMS值的总结。

通过“旋转”button启动不同的工作表

想要使用“旋转”button(ActiveX控件)来显示上一张或下一张。 点击button后,事件被成功触发,所需表单被激活,但是它保存了原始表单中的一些元素(命令,graphics等),并将其显示为附加图片。 向下button事件的示例代码: Private Sub SpinButton_JumpToWeek_SpinDown() Dim sh_num As String Dim tmp_num As Integer Application.ScreenUpdating = False Application.EnableEvents = False SpinButton_JumpToWeek.Value = Range("B27").Value – 1 tmp_num = SpinButton_JumpToWeek.Value ' Activate desired KTx sheet sh_num = "KT" & tmp_num Range("F27").Value = "" 'reset to blank Sheets(sh_num).Activate Application.ScreenUpdating = True Application.EnableEvents = True End Sub 要覆盖这种效果,我必须手动select(激活)另一张纸,然后再次select所需的纸张。 我也尝试用macros自动化这个解决方法,但不幸的是它不工作。 […]

VBA Excel在单元格中分隔date范围

这是给我头痛..我试图做到以下几点: 这是我有的数据,我有元素的名称和开始date和结束date。 我想在白天有这个数据,而不是在范围内(所以我可以上传到我有白天的数据库)。 我不知道如果我不使用VBA,我可以做到这一点,但我猜快速是VBA。 当前数据: ╔═══════╦════════════╦════════════╗ ║ name ║ start date ║ end date ║ ╠═══════╬════════════╬════════════╣ ║ foo1 ║ 25-11-2013 ║ 28-11-2013 ║ ║ foo2 ║ 25-11-2013 ║ 28-11-2013 ║ ║ foo3 ║ 25-11-2013 ║ 28-11-2013 ║ ║ foo4 ║ 25-11-2013 ║ 28-11-2013 ║ ║ foo5 ║ 25-11-2013 ║ 28-11-2013 ║ ║ foo6 ║ 28-11-2013 […]

使用Excel中的VBAmacros为每行创build一个新图表

首先让我只是说这个网站是天赐之物! 我有一个范围的数据B2:每个月的AS40。 这个月是在A2:AS2,在A2:A40是一个名单的列表,所有这一切都在'Sheet1' 经过一些先前的search后,我想出了以下内容,脚本为每一行创build一个新的图表,创build一个标题并以6m的间隔放入MajorGridlines,但是不绘制数据。 我不能为了我的生活而努力为什么! 请帮忙 Sub test() Dim Row As Integer Dim ws As Worksheet Dim rng As Range Set ws = Sheets("Sheet1") 'Change this to: Set ws = Sheets("Master Sheet") For Row = 3 To 5 Set rng = ws.Range("B3:AS3").Offset(Row, 0) 'Change to (I'm guessing here): ws.Range("$J$7:$Y$7").Offset(Row, 0) ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range(ws.Name & "!" […]

在Excel注释中确定图像

我发现大量的vba插入图像的评论 Selection.ShapeRange.Fill.UserPicture "C:\Temp\Pictures\ewe.jpg" 你如何确定已经用于评论的图像? 我想提取embedded的图像名称,如果可能的话。 有没有一个财产可以让我这个? 在注释填充效果对话框中,图像名称似乎是可以访问的。