Tag: vba

使用VBAinput单元格公式

在单元格A1中有这个简单的公式 =10*Round(B1/10,0) 我知道如何在VBA中input,我只是写: Range("A1").Formula = "=10*Round(B1/10,0)" 现在,如果我不知道我想要的数目的单元格是多less? 换句话说,我的代码中有一个整型variablesN,它可以取多个值,并且我想将B中第N行的数字四舍五入。 我怎么写这个? 我试过了: Range("A1").Formula = "=10*Round(B" & N & " & "/10",0)" 但是这不起作用。 尝试引用多个布局,但没有成功。 任何人都可以让我知道: 如何input这个简单的公式? 更重要的是 提供一些链接/参考,以帮助我在将来input其他公式? 谢谢

Excel 2007插件显示,但不工作

我创build了一个出现在用户界面中的Excel插件,但每当我点击它都不起作用。 Option Explicit Public sheetscol As Collection, depshtnm Public hasdeps As Boolean '*********************************** '*finds the external dependencies of the cell, and places them in the 'sheetscol' collection '*********************************** Sub depfinder_eventhandler(control As IRibbonControl) depfinder End Sub '————– Sub depfinder … End sub 这是XML CustomUI: <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:m="MattSinSpace"> <ribbon> <tabs> <tab idQ="m:MattTab" label="Matt Tools" insertAfterMso="TabHome"> <group idQ="m:migration" […]

VBA将Excel中的function区最小化

我想用VBA将Excel 2013中的function区最小化。 我不想切换function区,我不想隐藏所有包括“文件”,“插入”等。我已经尝试了几种不同的方法,但没有满足我想要的。 这隐藏了一切: Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False) 这切换: CommandBars.ExecuteMso "MinimizeRibbon" 这也切换: SendKeys "^{F1}" 我如何简单地强制我的丝带被最小化?

VBA名称 – 他们在哪里引用?

我已经在工作簿的一个工作表上定义了大量的命名单元格。 每个名称可以在该工作表或工作簿中的其他名称上使用多次(或从不)。 有没有办法获得工作簿中名称被使用的地方的列表? 例如,假设我为Sheet1上的单元格定义名称Fred 。 在sheet2上有一个方程,单元格B6 =Fred*6 。 我如何获得一个函数返回Sheet2!B6和Fred使用的其他地方? 我希望这是清楚的。 🙂

在“数据有效性”下拉列表中设置默认值

我在我的工作表中有很多下拉列表,这些列表是通过菜单“ Data > Data Validation >” list 。 在VBA中是否有一种批量方式将它们全部设置为默认值? 默认值是指在列表中声明的第一个值。 BTW。 我在A1中设置了一个下拉列表的源代码,其公式为: =OFFSET(C1;0;0;1;COUNTA(C1:Z1)) 有没有办法把这个公式在B1中,并在下拉列表源中调用=INDIRECT(B1)只指向一个单元格? (这不起作用)。

复制选定的行两次

我已经写了一个非常基本的Excelmacros来复制选中的行两次,然后将光标向下移动3行,以便可以重复该过程。 所以如果我有一个文件,前10行都需要重复两次,我运行macros10次。 这已经为我节省了一堆击键,但我相信它可以写得更好,所以我只需select前10行,然后运行一次macros。 以下是我到目前为止: Sub Copy_Twice() ' Copies current row twice ActiveCell.EntireRow.Select Selection.Copy Selection.Insert Shift:=xlDown ActiveCell.EntireRow.Select Selection.Copy Selection.Insert Shift:=xlDown ActiveCell.Offset(rowOffset:=3).Select End Sub 对于运行此macros的每个文件,它可能不是要复制的前10行。 实际上,如果J列中的单元格为空白,则更好的macros将是每行复制两次。 更新:文件具有包含列A到X的值的标题行。要复制的行将是J列为空的标题之后的前x行。 所以在一个例子中,第2-11行需要被复制两次。 但在另一个文件中,可能是第2-21行。

正则expression式匹配困难

我目前的正则expression式: ([\d]*)([^\d]*[\d][az]*-[\d]*)([\d][az?])(.?) 所以我试图使正则expression式匹配一个string基于:计数,可以是任何数量的数量从0至100万,然后是一个数字,然后有时一个字母然后 – 然后任何数字的数字后跟相同的数字,有时一封信,有时一封信。 它应该匹配的string的例子: 1921-1220104081741b 192123212a-1220234104081742ab 一个基于上面应该返回的例子(这是两个例子,它不应该读两条线)。 (192) (1-122010408174) (1) (b) (19212321) (2a-122023410408174) (2a) (b) 我当前的正则expression式和第二个正则expression式一样,但是当我希望它返回(1)(b)时,返回(1b),而在第二个情况下返回(2a),或者返回 1926h-1220104081746h Should Return: (192) (6h-122010408174) (6h) 不是100%肯定,如果可能的话,我觉得我是相当新的正则expression式。 作为参考,我在excel-vba中做这个,如果还有其他方法可以做到这一点的话。

在运行Excelmacros时,剪切工具不启动剪贴板?

我想自动剪切屏幕的一个区域。 我正在使用这些库和定义: '—— I don't own these functions. Copied them from the Internet. —— Public Declare Function GetCursorPos Lib "User32" (lpPoint As POINTAPI) As Long Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, […]

如何从行,列到Excel A1表示法?

给定一个行和列(As Long),如何在Excel(2007)中使用VBA确定电子表格符号: 例如: (R, C) = (1, 1) -> "A1" (R, C) = (2, 1) -> "A2" (R, C) = (2, 2) -> "B2" 因此,如果你有一个function: Function CellRef(R As Long, C As Long) As String 其中提供的function,你可以做这样的事情: Worksheet.Range(CellRef(R1, C1) + ":" + CellRef(R2, C2)).Copy 有一点背景,以防万一这是错误的做法:这样做的目的是,我有一张表格描述其他工作表的主表: WorksheetName, Range etc…. 此主表单控制表单上的转换,但范围值显然是Excel表示法,以便日后在引用范围时使用。 然而,pipe理这个表的一个例程,报告exception并确保一致性确实从行和列中的其他表获取事物,因此例如它获得行和列,它知道什么是开始和结束。 这里是我最后的function: Private Function CellRef(R As Long, C […]

如何使用excel vba将事件分配给多个对象?

我在工作表上有十个下拉菜单,每个下拉菜单都应该对GotFocus()事件作出相同的响应。 我写了下面的代码,但我得到一个运行时错误(459) – “对象或类不支持设置,如果事件” 在一个名为clsPDRinput的类中,我有以下几点: Public WithEvents inputObj As OLEObject Public Property Set myInput(obj As OLEObject) Set inputObj = obj End Property Public Sub tbPDRInput_GotFocus() //Do some stuff… End Sub 我然后运行下面的代码是产生错误: Dim tbCollection As Collection Public Sub InitializePDRInput() Dim myObj As OLEObject Dim obj As clsPDRInput Set tbCollection = New Collection For Each myObj In […]