Tag: vba

无法获取WorksheetFunction类的Match属性

我想要做的是基于单元格oSht_Input.Cells(Rows, 7) ,我想在另一张表(periodSheet)列A中find一个匹配,并根据给定的列获取相应的值。 我已经尝试过使用.Index和.Index来做到这一点。 .Index适用于我,但我越来越错误,说 运行时错误“1004”:无法获取WorksheetFunction类的Match属性。 我也尝试过在代码中执行Application.Match ,但是这会返回一个#N/A值。 我究竟做错了什么? 我有点困惑Application.Match和Application.WorksheetFunction.Match的使用。 Set oSht_Input = Worksheets(outSheet) Set periodSheet = Worksheets("PeriodMetadata") lastRow = oSht_Input.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For Rows = 2 To lastRow With Application.WorksheetFunction dateCell = oSht_Input.Cells(Rows, 7) If rollupDataFile.GroupByPeriod Like "Week*" Then If rollupDataFile.GroupByPeriod Like "*Sunday" Then oSht_Input.Cells(Rows, 16).value = .Index(periodSheet.Range("B:H"), .Match(dateCell, periodSheet.Range("A:A"), 0), 1) ElseIf rollupDataFile.GroupByPeriod […]

确定应用程序是否正在运行Excel

目标 使用“search”button打开一个自定义程序的Excel文件。 这个程序用于研究。 如果程序在用户点击button时已经打开,则popup并关注给定的程序。 现在的情况 以下是我正在尝试使用的代码: searchbutton Private Sub btnSearch_Click() Dim x As Variant Dim Path As String If Not IsAppRunning("Word.Application") Then Path = "C:\Tmp\MyProgram.exe" x = Shell(Path, vbNormalFocus) End If End Sub IsAppRunning() Function IsAppRunning(ByVal sAppName) As Boolean Dim oApp As Object On Error Resume Next Set oApp = GetObject(, sAppName) If Not oApp […]

vlookup拆分值VBA

我创build了一个像vlookup一样工作但具有拆分值的macros。 我想从第二张分割值(用分号分隔)中find值,并将描述复制并粘贴到新的表格中。 第一个循环遍历工作表2中的列表,并将该值设置为variables,第二个循环通过拆分值检查何时完全匹配,并将描述复制并粘贴到第二个工作表。 但是 – 这是行不通的,我不知道问题是什么。 我有通知"type mismatch" 。 我尝试使用部分文本string的查找,但它也不起作用。 Sub Metadane() Dim ws As Worksheet Dim aCell As Range, rng As Range Dim Lrow As Long, i As Long Dim myAr Dim ws2 As Worksheet Dim bCell As Range, rng2 As Range Dim variable As String '~~> Change this to the relevant worksheet Set […]

使用VBA正则expression式在逗号后面添加一个空格

我正在尝试使用正则expression式来查找逗号分隔的单元格,但逗号之后没有空格。 然后,我想简单地在逗号和下一个字符之间加一个空格。 例如,一个单元Wayne,Bruce有Wayne,Bruce文本,但我想把它交给Wayne, Bruce 。 我有一个正则expression式模式,可以find没有空格的字符和逗号的单元格,但是当我replace它时,会切断一些字符。 Private Sub simpleRegexSearch() ' adapted from http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops Dim strPattern As String: strPattern = "[a-zA-Z]\,[a-zA-Z]" Dim strReplace As String: strReplace = ", " Dim regEx As New RegExp Dim strInput As String Dim Myrange As Range Set Myrange = ActiveSheet.Range("P1:P5") For Each cell In Myrange If strPattern <> "" Then […]

VBA:select第一个过滤的单元格,然后移到下一个单元格

我想要做的事似乎对我来说很简单,但我找不到一个办法。 我有一个Excel电子表格,其中有很多联系方式,例如: ABCDE 1 Select who you would to like to email: * Drop down list * 2 Name: Company: Role: Email Address1: Email Address2: 3 Michael Jackson Jackson 5 Singer MJ@J5.com Michael@J5.com 4 Brian May Queen Guitarist BM@Queen.com Brian@Queen.com 5 Kurt Cobain Nirvana Singer KC@Nirvana.com Kurt@Nirvana.com 6 Freddie Mercury Queen Singer FM@Queen.co.uk Freddie@Queen.com 7 […]

Excel VBA循环遍历所有工作簿和所有工作表

我想要创build一个Excel VBA循环遍历所有.xlsx文件和这些文件中的所有工作表。 不过,我这里的代码只能处理第一张纸而不是所有的纸张。 有人可以告诉我,如果我的代码有什么问题吗? 非常感谢! Sub Rollup() Dim wb As Workbook, MyPath, MyTemplate, MyName Dim ws As Worksheet MyPath = "I:\Reports\Rollup Reports\" MyTemplate = "*.xlsx" MyName = Dir(MyPath & MyTemplate) Do While MyName <> "" Set wb = Workbooks.Open(MyPath & MyName) For Each ws In wb.Worksheets LocationReport Next ws wb.Close True MyName = Dir() Loop […]

找不到Microsoft Forms 2.0对象库或FM20.DLL

我想用这个库来处理剪贴板。 我希望看到下面的截图,但我无法在我的参考库列表中find它。 我尝试添加VBA表单到我的Excel项目没有成功。 我怎样才能让它出现? 我的整个计算机W7和Excel 2016上没有FM20.DLL文件。

Excel VBA-尝试基于值将值复制到汇总表

在我的文件中,我有一个表格名称列表,与摘要页面A列中的值相对应。 我想从每个工作表拉取单元格B6中的值,并将其粘贴到汇总表中该客户端的相应行中。 我一直在尝试通过从列A的文本的值命名的工作表复制基于列A中的值来查找要复制和粘贴,但我得到一个“下标超出范围“工作表错误(a).Range(”B6“)。复制问题。 代码如下: Sub columnfiller() Dim i As Integer Dim a As String a = Worksheets(2).Cells(7 + i, "A").Text For i = 3 To Worksheets.Count Worksheets(a).Range("B6").Copy ActiveSheet.Paste Destination:=Worksheets(2).Cells(7 + i) Next i End Sub 7 + i是表中第一个单元格的引用。

在数组中重复N次

使用Excel VBA。 我试图创build一个像这样的重复模式的数组: a = Array(1,1,1,1,1,2,2,2,2,2,2) 有没有一个整洁的解决scheme(没有经过一个循环)来做到这一点? 在几乎所有其他统计语言中,这都是通过重复函数来完成的。 例如R中的“rep”函数或者Matlab中的“repmat”函数: a = [repmat(1,1,5),repmat(2,1,6)] 首先不硬编码的原因是因为实际的数组具有不同的长度,取决于其他一些variables。

使用.DeleteLines从模块VBA中删除特定的代码

我想在VBA中使用.DeleteLines函数。 由于我没有删除模块中的所有行,我需要一个有针对性的方法。 我假设有一个像Find(“FooBar”)函数。LineNumber,但是我无法find它在这里/与谷歌: https://msdn.microsoft.com/en-us/library/office/gg264546.aspx Sub Deletings() With Workbooks("ClassExperiment.xlsm").VBProject.VBComponents("Module2").CodeModule .DeleteLines(HowDoIGetThisValue, 0) End With End Sub 帮助赞赏。