Tag: vba

使用excelmacros/ vba打开/closures图表系列的可见性

我正在Excel中制作一个线形图(图表),将几个数据系列绘制到同一个图表上。 我需要创build一个macros/ VBA的解决scheme,可以通过按下button(或checkbox等)来打开/closures这些系列的可见性, 与此图片类似(通过Excel菜单系统手动完成) 我试图通过所有的成员variables/方法 https://msdn.microsoft.com/EN-US/library/office/ff837379.aspx 但没有太多的运气。 我曾试着玩过类似的东西 Charts("Chart1").SeriesCollection(1) 和 Worksheets("Graphical Data").ChartObjects(1) 但我既不能得到图表对象(我得到一个下标超出范围的错误),也不能find任何方法,让我打开/closures个人系列的知名度。 有任何想法吗?

Excel VBA复杂stringreplace

有没有办法在一个string中find一个子string,然后在它之前和之后replace该子string和一些字符? 例如,我有这些: Mandatory659852 ynn TRY RACE Mechanica888654 ynn FRY SAME GILLETE685254 ynn CRY FACE 我可以编程VBA删除子string" ynn "包括子string左侧的任何6个字符,无论其右侧的3个字符? 所以结果应该是: "Mandatory RACE" "Mechanica SAME" "GILLETE FACE" 我无法search谷歌,因为我不知道这个词是什么。 我知道我可以在VBA中使用.replace来代替子string,但我不知道如何使用通配符.replace(****** ynn ***)

如何将VBA代码应用于工作簿中的所有工作表

我试图应用此代码,但出于某种原因,它不工作,任何人都可以帮我修复它? 它应该删除包含特定文本的行并将其应用于工作簿中的所有工作表。 当我尝试这个代码时,它只适用于一个工作表。 显然,删除代码的行部分工作,但不是应该适用于所有工作表的循环。 Sub WorksheetLoop() Dim c As Integer Dim n As Integer c = ActiveWorkbook.Worksheets.Count For n = 1 To c Step 1 Last = Cells(Rows.Count, "A").End(xlUp).Row For I = Last To 1 Step -1 If (Cells(I, "A").Value) = "Text" Then Cells(I, "A").EntireRow.Delete End If Next I Next n End Sub

Excel的FREQUENCYfunction如何工作?

具有以下function: =FREQUENCY(C2:C724,D2:D37) 第二个参数是BIN 我不明白的是为什么Excel会为您的其余值增加BIN 。 BIN不会改变! 它保持不变。 然而,当我粘贴所有的价值公式,它是这样做的: =FREQUENCY(C2:C724,D2:D37) =FREQUENCY(C2:C724,D3:D38) =FREQUENCY(C2:C724,D4:D39) 最后一列是生成的(这是正确的,但没有意义!) Etoh bin 15.9 20 0 14.6 19 0 14.1 18 0 13.9 17 0 13.3 16 0 13.3 15 0 13.2 14 1 12.6 13 2 12.1 12 3 11.8 11 6 11.5 10 4 11.2 9 4 11 8 8 10.5 7 […]

带有参数的Excel VBA CommandBar.OnAction很难/不按预期执行

所以,我已经谷歌search,似乎在自定义popup菜单,如果有人想传递参数,那么这是可能的,但对我来说有两个主要问题: 1)你调用的函数将会执行,但是你将不能激活它的断点,甚至不能使用Stop。 2)奇怪它似乎被召唤两次,这也不是很有帮助。 代码来说明(请放在一个模块,而不是在一张表) Option Explicit Sub AssignIt() Dim cbrCmdBar As CommandBar Dim strCBarName As String On Error Resume Next strCBarName = "MyNewPopupMenu" 'Delete it first so multiple runs can occur without appending Application.CommandBars(strCBarName).Delete ' Create a menu bar. Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarMenuBar) ' Create a pop-up menu. strCBarName = "MyNewPopupMenu" Set cbrCmdBar = […]

VBA – 如何获取Excel 2010中目录中最后修改的文件或文件夹

我想要做的比从文件列表中select一个文件更复杂。 我将从一个目录开始,然后我想更改为最近修改的目录。 然后我想在一个子目录中重复这个过程,然后,在里面,我想select最近修改的excel文件并打开它。 什么是最好的方法来做到这一点? 我应该看什么对象/方法?

使用Excel VBA读取网页

我想用Excel VBA读取网页。 我如何执行这个任务? 这甚至有可能吗?

Excel 2010 VBA列的长度给定列索引

鉴于其简单的描述,我发现这个令人惊讶的难以find答案。 我希望这不是重复,虽然这可能是因为它的简单,我根本找不到答案。 在VBA中,我有数百个列,我想知道他们所有的长度。 我知道有确切的“COLS”列。 我想要这样的东西: For i in COLS length = 'Some one line formula to find the length of column i 'Some code that works with the value of length Next i 通过长度我的意思是非空单元格的数量…为我的具体目的将不会有空白单元格列中,我希望计算列中的所有单元格将包含文本(其余的将是空的) 。 帮助将非常赞赏这个看似简单的事情! 编辑:我也想使这个依赖列索引(这将是'我'在上面的循环)。 我不会一直知道专栏文章

从基于可变用户定义path的封闭工作簿中复制数据

我已经耗尽了我的searchfunction,寻找解决scheme。 以下是我想要做的事情的概要: 用户打开启用macros的Excel文件 即时提示显示用户input或select所需工作簿的文件path。 他们将需要select两个文件,文件名可能不一致 input文件位置后,第一个文件select中的第一个工作表将被复制到已启用macros的工作簿的第一个工作表中,第二个文件select的第一个工作表将被复制到已启用macros的工作簿的第二个工作表。 我遇到了一些对ADO的引用,但是我对此还不太了解。 编辑:我已经find一个代码来从一个封闭的文件中导入数据。 我将需要调整范围来返回variables的结果。 Private Function GetValue(path, file, sheet, ref) path = "C:\Users\crathbun\Desktop" file = "test.xlsx" sheet = "Sheet1" ref = "A1:R30" ' Retrieves a value from a closed workbook Dim arg As String ' Make sure the file exists If Right(path, 1) <> "\" Then path = path & […]

强制vba在继续之前等待sql查询执行

这似乎是一个相当普遍的问题,但我发现的解决scheme似乎没有工作。 我从SQL Server获取一些数据并将其复制到工作表中。 然后我想从新的数据中复制一个范围,并用它来做其他的事情。 所有这些都发生在一个单独的vba函数中。 我的问题是当函数从Excel运行时,它将移动到函数的第二部分,而不用等待查询返回所需的数据。 当然,当我从vba IDE运行它时,该function工作正常。 Dim a As New ADODB.Connection Dim r As New ADODB.Recordset a.Open (connStr) Set r = a.Execute(sqlstr) sht.Range("A2").CopyFromRecordset r 'please wait here until the proc has executed? checkData = sht.Range("A2").Value 当我从Excel运行函数时,checkData总是空的,当我用F5运行它时,它总是有所需的数据。