Tag: vba

VBA – 查找具有特定标题的列,并find该列中所有行的总和

我有一张大单。 我必须将该表中的多个filter设置为dynamic位置中的列标题。 一旦filter被设置,我必须find具有列标题“Nov”的工作表中的特定列,然后获得该列中的值的总和,并将该特定的总和值导入到不同的工作表中。 我已经写了代码,直到我可以将筛选器设置为多个列的部分,但是我发现很难find列标题并添加该列。 以下是我迄今为止编写的代码。 Sub Button2_Click() Dim colName As Long Dim colName1 As Long Dim colName2 As Long Dim r As Long SearchV = Range("A8:DD8").Find(What:="Nov", LookIn:=xlValues, LookAt:=xlWhole, _ MatchCase:=False, SearchFormat:=False).Column lastrow = Cells(Rows.Count, SearchV).End(xlUp).Row colName = Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _ MatchCase:=False, SearchFormat:=False).Column colName1 = Range("A8:DD8").Find(What:="Items", LookIn:=xlValues, LookAt:=xlWhole, _ MatchCase:=False, SearchFormat:=False).Column colName2 = Range("A8:DD8").Find(What:="Domain", LookIn:=xlValues, […]

为什么VBA中的每个类都有一个应用程序属性?

我想澄清一下为什么VBA中的每个类( 或几乎每个类 )(当你滚动浏览对象的时候)都有一个Application属性。 MSDN说 当没有使用对象限定符时,此属性返回一个表示Microsoft Excel应用程序的Application对象。 当与对象限定符一起使用时,此属性将返回一个Application对象,该对象表示指定对象的创build者(您可以将该属性与OLE自动化对象一起使用以返回该对象的应用程序)。 只读。 第一句话很清楚。 您的托pipe应用程序使用没有限定符可以是支持VBA的MS Office产品之一。 在Excel Debug.Print Application = Microsoft Excel 在Word Debug.Print Application = Microsoft Word 等等… 但是……第二句话对我来说是完全不清楚的……所以我在想,不pipe你在哪里打电话。从它的应用程序总是会返回一个对象的主机… 那么,VBA中的每个类有什么Application属性? PS。 你可以随时调用.Parent => .Parent来升级…不是吗? 你可以调用Application机智没有限定符得到… 我什至不能想到一个SSCCE OLE情况,所以我很抱歉,我没有提供一个例子。 Application属性(不要与Application 类混淆)logging不完整,这就是为什么我要求有更多经验的人为我澄清这一点。 其中一种( 很好,有点 )的情况,但不确定它甚至适用于这里可以使用Interop for Office。 就像当你有一个打开两个文件(一个Excel和一个Word)的外部应用程序,那么通过在这两个文件中获得对Range的引用,你也许能够返回Microsoft Excel和Microsoft Word ..但是这对于任何人? 嗯..我不理解这个整个概念?

Excel函数返回月份之间的差异?

我有一个工作表,有一个开始date和结束date。 我需要得到这些date之间的月数。 我用公式=MONTH(B1)-MONTH(A1)得到那#。 然而这个公式失败,当我的date跨越多年 – 如果开始date是1/1/2014和结束date是1/1/2015,然后返回一个“1”,当我想获得一个“12”。 然后我尝试了DATEDIF(A1,B1,"m")来获得date之间的月份数,并且工作。 但是,我的问题可以通过下面的例子来总结: 情况1: 开始date:1/5/2014 结束date:3/1/2014 “MonthDif”: 2 DateDif: 1 情况2: 开始date:1/5/2014 结束date:3/10/2014 “MonthDif”: 2 DateDif: 2 正如你所看到的, DATEDIF函数返回完整的月份数,而我的month – month函数返回开始date和结束date之间差异“占用”的月数,无论它们是完整的月份。 我需要在任何date期间的月数,不pipe是整整几个月! 基本上,我需要的是什么MONTH(B1)-MONTH(A1)返回,除了它将工作多年。 另外,我正在考虑devise一个自定义的VBA函数来达到上述目的。 如果有人有任何build议。

VBA评估函数和数组公式返回值的范围

假设我想使用Evaluate函数来计算返回一个值范围的数组公式。 例如,我尝试在Sheet2中的有序列表中获取索引(使用Excel函数MATCH)!A:A为Sheet1中的每个值!A:A。 我想把这些指数放在B列。 Dim sh as Worksheet Set sh = Sheets("Sheet1") sh.Range("B1:B10").Value = sh.Evaluate("=MATCH(A1:A10,Sheet2!A:A)") 我运行代码,我得到一列重复值 – 值等于第一个元素的索引。 这是不正确的。 当我尝试通过在工作表{= MATCH(A1:A10,Sheet2!A:A)}中的数组公式工作,并返回正确的索引为每个元素。 所以我的问题:如何使用评估函数返回一个完整的值范围?

VBA中Thisworkbook.name和Activeworkbook.name的区别

Thisworkbook和ActiveWorkbook之间有任何区别。 示例代码: Sub workbook_name() MsgBox Thisworkbook.name End Sub Sub active_name() MsgBox Activeworkbook.name End Sub 两者将返回相同的输出, 有没有其他的情况下,我们必须特别使用ActiveWorkbook不工作的ThisWorkbook

在Excel工作簿中比较两个工作表的最佳方法是什么?

鉴于我有以下 <Sheet 1> Item QTY A 5 B 1 C 3 <Sheet 2> Item QTY A 15 B 4 C 1 D 8 生成显示表单1和表单2之间差异的报表的最佳方式是什么? 喜欢 <Difference> Item QTY A 10 B 3 C -2 D 8

从Excel文档自动在Word中创build表格

我在Excel中有一组数据,如下所示(以CSV格式) heading1, heading2, heading3, index A , randomdata1, randomdata2, 1 A , randomdata1, randomdata2, 2 A , randomdata1, randomdata2, 3 B , randomdata1, randomdata2, 4 C , randomdata1, randomdata2, 5 我希望能够自动构build一个Word文档,将这些数据(由heading1分组的信息)显示为单独的表格。 所以Word文档就是这样的 Table A heading1, heading2, heading3, index A , randomdata1, randomdata2, 1 A , randomdata1, randomdata2, 2 A , randomdata1, randomdata2, 3 Table B […]

Excel中的Len(cell.Value)= 0和cell.Value =“”是否相等?

在Excel中计算工作表中单元格的值时,以下语句是否为true? 当且仅当Len(cell.Value) = 0 ,则cell.Value = "". 这意味着可以安全地检查单元中是否有零个字符,而不是将单元格值与空string进行比较。

单击单击时运行Excel VBAfunction

我想知道是否有办法在工作簿中打开工作表时运行VBA脚本。 例如,我有一个名为“库存”的工作簿,我想打开“查看库存”工作表时运行“InitiateInventoryValues”function。 有人可以帮我吗?

VBA如何强制一个函数返回时按下表单button

我认为这很简单,但是certificate相当困难。 任何build议或想法都将是令人满意的。 我在Excel中有一个表单,如果按下某个button,我需要用户在运行该button的代码之前input密码。 我可以只使用一个input框,但是这将允许其他人看到input密码。所以我想用一个文本框的第二个表单,并将其PasswordChar参数设置为* 这是问题。 我想使用这样的代码 if checkPassword("Please enter your password") = False then exit sub checkPassword是一个将string作为参数的函数。 这个函数打开一个表单并把消息放入标签中。 用户应input密码并单击确定。 子btnOK_Click()应检查密码是否正确,然后强制打开表单的函数返回True,如果密码是OK或False是密码不正确。 我只是不能解决如何强制函数返回。 我试图设置一个全局variables为True或False当用户单击确定,然后卸载窗体。 这使得函数返回,但它也重置由表单设置的所有全局variables。 这是我的函数调用窗体 Function checkPassword(message As String) As Boolean frmPassword.Show frmPassword.passwordMsg.Caption = message 'passwordStatus is a global variable If passwordStatus = True Then checkPassword = True Else checkPassword = False End Function 这里是链接到表单确定button的子: Private […]