Tag: vba

错误9下标超出范围尝试了一切

在Set finder = .Find(clientName, LookIn:=xlValue, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)行接收到一个运行时错误9下标超出范围,我试了一堆事情来解决它。 我错过了一些至关重要的东西,我不确定它是什么。 通读这里的所有其他post,似乎没有帮助/关联太密切。 注意事项: 1)variablesclientName是一个标准的string,在传入函数时被正确赋值。 2)我通过在查找行之前添加contactsMaster.Activate行来testing工作表对象,并且它正确地激活了表单,这导致我相信它与表单或工作簿的名称无关(我使用getBook = Activeworkbook.Name在主要sub为了避免与用户名称更改的问题3)我已经将范围更改为contactsMaster.Range("A:C") ,并没有改变任何东西。 4)数据存储在列A到C中。每个单元一个客户端名称。 这个函数旨在通过客户端名称来标准化命名约定方法,以便我可以使用相同的约定从任何macros中find文件。 5)最初我以为在错误行上使用.Address是由于某种原因抛出一个错误,但它似乎不是这样,因为我已经删除它,仍然收到相同的错误。 代码如下: Function GetClientName(clientName As String) As String 'Gets specific client name to save excel file in a standardized format to be found easily 'Sets Objects/vars Dim finder As Range Dim location As Long Dim contactsMaster As […]

添加工作表并合并数据

我有一个2991工作表的工作簿。 每张表格都包含卡车信息。 每个工作表都被命名为city,state。 例如朱诺AK。 每个工作表格式也完全一样。 我有从每个工作簿(不包括标题)复制数据并将其放置在一个“组合”的工作表中的代码。 我想扩展代码,以便当工作表被复制时,城市和州被放置在新的单独的列。 例如,对于Jeneau,AK,当数据被复制到每辆卡车旁边时,城市Juneau被放置在F栏中,状态“AK”被放置在G栏中。 我有下面列出的代码以及示例屏幕截图。 Sub Combine() Dim J As Integer On Error Resume Next Sheets(1).Select Worksheets.Add Sheets(1).Name = "Combined" Sheets(2).Activate Range("A1").EntireRow.Select Selection.Copy Destination:=Sheets(1).Range("A1") For J = 2 To Sheets.Count Sheets(J).Activate Range("A1").Select Selection.CurrentRegion.Select Selection.Offset(1, 0).Resize(Selection.Rows.Count – 1).Select Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) Next End Sub 原始数据 组合数据

logging错误VBA excel批量命令

我有一个batch file包含 echo test string >>Log.txt 当我点击它将使一个Log.txt文件和“testingstring”将在其中。 但是,当我从VBA excel使用WScript.Shell运行batch file它不创buildLog.txt文件。 但批处理代码正在运行。 我怎样才能使它工作? 我正在使用Windows7和Excel 2007

遍历所有工作表

下面的代码,而不是循环遍历所有的工作表(除了例外)在执行后激活的表单上反复执行。 我做错了什么? Dim wsSheet As Worksheet For Each wsSheet In ThisWorkbook.Worksheets Select Case wsSheet.Name Case "Affiliates", "New Report", "Pasted Report", "New Month Or Client", "Set Up Data" 'Do nothing. Case Else With wsSheet Range("B72").Select Range("B72:L86").Sort Key1:=Range("I72"), Order1:=xlDescending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Range("B72:L72,B74:L74,B76:L76,B78:L78,B80:L80,B82:L82,B84:L84,B86:L86").Select Range("B86").Activate ExecuteExcel4Macro "PATTERNS(,0,1,TRUE,2,4,0,0)" Range("B73:L73,B75:L75,B77:L77,B79:L79,B81:L81,B83:L83,B85:L85").Select Range("B85").Activate ExecuteExcel4Macro "PATTERNS(,0,10,TRUE,2,4,0,0.799981688894314)" Range("C93").Select […]

引用范围对象的范围

我试图find一种方法来引用一个范围从另一个范围,例如,一个范围,持有单元格“A5:A10”,6个单元格在该范围内。 需要的是“B5:B10”旁边的范围。当已经有一个范围对象(在这种情况下为“A5:A10”)时,如何将其引用到下一个范围。 Dim R As Range Dim A As Range Set R = R("A5:A10").Select Set R = 'Code to refer to next column is here 对不起,这可能是错误的语法开始,它已经有一段时间,因为我在vba编码,这只是为了澄清什么是需要解决这个问题。

VBA,doc.getElementsByClassName()工作在debugging模式不运行模式

我在vba中使用下面的代码, Set results = Doc.getElementsByClassName("a-size-large a-color-price olpOfferPrice a-text-bold") If results.Length > 0 Then 但debugging模式下的长度只有在运行模式下不能超过1,我查了网站给了上面提到的类,但是在逐行debugging模式下debugging模式下工作不稳定,在运行模式下不工作。 谢谢DJ

Excel VBA“对象”WorksheetFunction“的方法”VLookup“失败”

这是以前的post的后续文章 。 由于提供了一些很好的build议,这个问题已经解决了。 我正在帮助当地的动物收容所,编写脚本将四张工作表中的数据合并成一份总体报告。 所有四张表都包含一个公共variables,我已经命名为AnimalID。 AnimalID位于狂犬病更新和狂犬病司法pipe辖区的A栏,按从小到大的顺序排列。 我以前的问题需要在狂犬病重build表上findAnimalID,并使用VLookup在报告表上复制到期date。 作为参考,date在报告开始时填入,在单元格Q8到底部。 我试图通过在狂犬病pipe辖表上findAnimalID来使用(或者我认为)相同的方法来填充报告表上的所有者信息。 所有者信息应该从单元格A140(之前的单元格已经填充)开始填充,因此为什么包含两个variables来标记位置。 当我尝试运行该脚本时,当它到达任何注释的VLookup行时,我收到以下错误。 错误:“对象'WorksheetFunction'的方法'VLookup'失败” 我不知道A ##值是否会正确填充,但我认为其他人应该工作得很好。 思考和build议,将不胜感激。 谢谢! Dim Ct As Long, lMaxRows As Long Dim AnimalID As Range, Jurisdiction As Range, Renewal As Range Worksheets("Rabies Renewal").Activate Range("A:A").NumberFormat = "@" Set Renewal = Sheets("Rabies Renewal").Range("A:K") Worksheets("Rabies Jurisdiction").Activate Range("A:AI").NumberFormat = "@" Set Jurisdiction = Sheets("Rabies Jurisdiction").Range("A:AI") Worksheets("Report").Activate Range("Q:Q").NumberFormat […]

使用variables来定义一个范围

我正在尝试将8 x 1范围的值存储到一系列相同的维度中,但在工作簿中的另一个工作表上。 这将是很容易的,只是我的脚本循环这些相同的维度的不同范围,我需要将它们都存储在第二张表。 目前我的代码如下所示: Sheets("Sheet1").Range(Cells(i, 2), Cells(i + 7, 2)).Value = Sheets("Sheet2").Range("OriginalData").Value 其中“i”是在循环中用作迭代器的variables。 此代码将引发错误“错误1004”应用程序定义或对象定义的错误“”。 有人可以解释我做错了什么,以及如何以这种方式dynamic地正确定义范围对象?

运行VBA代码来更新Excel表格更新时的下拉列表值

我想知道如何将值绑定到drodownlist每次当新的值更新特定的工作表。 任何人都可以帮助我做到这一点 提前致谢..

更改数据透视表caching的值,而不更改源数据

是否有可能更改数据透视表caching中的值而不改变它在源数据(无论是Excel表或外部来源)? 是否有可能与caching本身工作,即像一个数组一样工作?