Tag: excel vba

遍历所有工作表

下面的代码,而不是循环遍历所有的工作表(除了例外)在执行后激活的表单上反复执行。 我做错了什么? 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编码,这只是为了澄清什么是需要解决这个问题。

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本身工作,即像一个数组一样工作?

从Access的Excel格式化每隔一段时间(对象variables/块未设置)

我有一个点击子例程,导出两个表格,以Excel。 然后,我logging了一个Excelmacros,并将代码复制到相应的格式化工作表。 我的问题是,我每隔一段时间运行代码,我得到这个错误:“运行时错误'91':对象variables或块variables未设置” 这发生在我的代码的这一点: With .ActiveSheet .Range("B" & .Cells.Rows.Count).End(xlUp).Offset(1, 0).Activate End With With ActiveCell '~~~~~~~~ERROR OCCURS HERE~~~~~~~~~~~~ .formula = "=SUM(B2:" & ActiveCell.Offset(-1, 0).Address & ")" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .Font.Bold = True End With 我想要SUM的范围是dynamic的,这就是为什么我在公式中抵消了单元格1,我试过了: .formula = "=SUM(B2:B3)" 但是这给出了同样的错误。 完整的代码如下,我已经收到来自“Excel工作表格式”注释下的第一行的这个错误,并且已经通过在代码中添加了块,但是无法避开.formula =行。 我真的坚持这一点,任何帮助将不胜感激 完整代码: Private Sub cmdExport_Click() Dim xl As Excel.Application Dim wb As Object Dim todaysDate As String […]

VBA从网站刮取数据 – 空数据错误

我正在创build一个macros来从网站上抓取数据。 我遇到的问题是当最后一个完整的页面被刮,列A没有数据,但其他列做,我收到一个运行时间1004错误。 例如,如果要刮取的总页数是6,并且列A在第5页上的最后一个条目中没有数据,则macros将擦除第5页上的所有数据,但是在尝试获取时会抛出运行时错误到第6页。第6页也有数据,但是我认为,因为A列中没有数据,所以它只是决定给出运行时间错误。 任何想法呢? 另外,用我所包含的代码,直到下一个箭头消失,macros观循环会更容易吗? 如果是这样,我怎么会这样做呢? 'Macro to query Daily Activity Search for DFB Counties 'Run Monday to pull data from Friday Sub queryActivityDailyMforFWorking() Dim nextrow As Integer, i As Integer Dim dates dates = Date – 3 Application.ScreenUpdating = False Application.DisplayStatusBar = True Do While i <= 50 Application.StatusBar = "Processing Page " & […]

excel 2013 vba与其他办公室程序冲突

我们的公司在6个月前升级到了2013年。 我有预先存在的代码,导入CSV文件,执行计算,并更新graphics。 自2013年升级以来,运行Excel VBA代码时,其他Office 2013程序(例如Word,Outlook)将无法响应鼠标或键盘input,直到VBA代码完成。 有趣的是,PowerPoint不会出现影响。 在我的VBA代码中,我使用了典型的加速技术:application.windowstate = xlMinimized,使用手动计算,closures屏幕更新。 我遇到了堆栈溢出( Application.Screenupdating = false影响所有办公室 )的页面,表明屏幕更新设置为false是一个潜在的问题。 我试着按照这个链接和其他许多人的build议来修改我的代码,这样Word和Outlook在macros运行时仍然可以正常工作。 这包括使用“Excel”。 前缀(例如,Excel.Application.ScreenUpdating = False),使窗口最大化,使用“Excel.Application.Windows(ThisWorkbook.Name).WindowState = xlMinimized,等等。我已经试过的东西已经消除了Excel VBA的影响其他Office应用程序,我不能从根本上理解为什么办公室(显然)交织在一起,一个应用程序可能会对其他应用程序产生不利影响,在Office 2010或早期版本中我没有看到这种效果。

Excel 2013:我需要Sheet1 Col D = Sheet2 Col D如果Sheet1 Col B = Sheet 2 Col A,否则Sheet1 Col D是昨天的date

使用Excel2013,我只需要在Sheet1 Column B = Sheet2 Column A的条目中填充Sheet1 Column D中的单元格,否则Sheet1 Column D填充了昨天的date。 这需要引用表单的索引号,而不是名称或代码名称,因为Sheet2将每天更改。 我是VBA新手,真的不知道从哪里开始呢! 编辑:Sheet1是完整列表和Sheet2是每日例外的列表,或只是那些不报告。 所以我需要它来查看所有的ColumnA,并将其与所有的ColumnB进行比较。 Sheet2 ColumnD是最后的报告date。 对此我非常陌生,所有我试过的都是比较基本的配方。 如果我不需要它总是参考第二张纸,那就完成了! 我感谢所有的build议!