Tag: vba

高级filter错误

我正在尝试创build一个唯一的列表,但列表中的第一个值是空白,这似乎是导致我一个问题。 当我使用基本的高级filter时,它基本上只是命名范围“提取”并复制格式。 所以F2等于`Extract'如下, 我已经尝试了使用标准范围的许多方法,但似乎没有任何工作。 理想情况下,我希望这是VBA代码,但手动高级filter不起作用。 澄清我正在像这样寻找, 我在这里看到一个类似的问题,它只是不适合我。 有没有人有任何想法我做错了? 这是“复制到新的位置”选项,这是搞砸了吗? 理想情况下,我需要它是独特的领域,但我似乎得到相同的结果,有或没有唯一字段唯一方框打勾。 最终我希望这是代码,但是,当我在VBA中运行下面时,我得到一个运行时错误。 Range("E2:E5").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "h1:h2"), CopyToRange:=Range("F2"), Unique:=True 编辑

Excel直方图 – 分配线

我想在Excel中创build一个直方图,这很容易使用数据分析工具箱。 如果我想在vba自动设置,我可以使用这个post自动获取垃圾箱,然后设置参考范围。 当我想拥有平滑的配电线时,就会出现问题。 如果将图表types改为散点图平滑线,则会将列高互相连接,如图所示的蓝线: 但是我真正想要的就像是紫色的线条(即直方图顶部的正态分布)。 如果数据偏斜或通常具有不同的分布,则这不是期望的。 有没有办法使这个覆盖自动参考数据的分布? (类似于R的东西)最好使用macros,但任何input都会很好。

xlErrorChecks枚举Office 365 / Excel 2016

在我当前版本的Excel中,xlNumberAsText的枚举看起来与文档XlErrorChecks枚举(Excel)和SO上推荐的使用之前的用法不一致。 看来,特别的错误是项目4; 而之前有关使用VBA清除此错误的post使用了3的常量。 这是Excel 2016中的一个错误吗? 或者我做错了什么。 这里是展示这个问题的代码。 如果您在运行代码之后检查工作表,很明显错误在Excel中被标记为NumberAsText而不是Inconsistent Formula 。 Option Explicit Sub foo() Dim I As Long Dim B As Boolean Dim S As String Dim R As Range 'Save current state B = Application.ErrorCheckingOptions.NumberAsText 'Enable Application.ErrorCheckingOptions.NumberAsText = True Set R = Cells(1, 1) With R .Clear .NumberFormat = "@" .Value = "1" End […]

我的模块结束后,Internet-Explorer将不会closures

我有这个从网站上抽出数据的macros。 我得到来自用户的input。 它工作没有错误,但由于我看不到的原因,IE不会closures和吸收我所有的RAM。 是否需要其他东西,而不是IE.Quit ? 这是分。 正如你所看到的,我最后closuresIE。 Public Cancel As Boolean Sub USGD() Dim IE As Object Dim iWsh As Worksheet Dim link As String Dim sDate As String Dim eDate As String Dim StationID As String Cancel = False With USGS .StartUpPosition = 0 .Left = Application.Left + (0.5 * Application.Width) – (0.5 * […]

整数布尔/位数组没有循环

我有一个数字(比如5),我首先想将它转换为二进制(101),然后在VBA中分成{1,0,1}或布尔值{True,False,True} 有没有办法做到这一点没有循环? 我可以转换为二进制没有循环在我的代码与工作表公式如下 myBinaryNum = [DEC2BIN(myDecInteger,[places])] 但是我被告知工作表函数效率很低,而且这个function是非常有限的。 我不知道如何拆分成一个数组,而不需要用MID循环数字。 有什么像strConv数字?

在Excel VBA中,检查网页是否完全加载的方法是什么?

要暂停代码,直到网页完全加载,我几乎一直在使用下面的方法取得了巨大的成功。 Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop 但偶尔,在方法确定页面已完全加载之后,我会看到文本内容加载,因此内容不会被提取。 但是,如果我通过F8单步执行代码,则会每次提取内容。 这可以尽可能快地按下F8键。 那么如何在代码继续提取数据之前检查以确保页面及其所有内容都已完全加载? 在这两种情况下,IE都在不知不觉中运行。 不过,我已经试过这个可见的IE浏览器,实际上在我正在使用的网页上的这个特定位置的内容。 这是在Excel 2016中使用VBA脚本完成的。 具体的内容请求是这样写的: 'get item name from page and write it to the first cell on the first empty row available Set itemName = objIE.document.querySelector(".the-item-name") Worksheets("Results").Range("A1048576").End(xlUp).Offset(1, 0).Value = itemName.innerText 我已经通过Excel VBA阅读:在Internet Explorer中等待JavaScript执行,因为我认为可能在文档加载之后添加了值,以防止任何人抓取数据。 但是,我似乎无法确定任何可能会这样做的脚本。 这并不意味着它不在那里。 我现在还看不到它。 具有此问题的页面的具体示例是URL https://www.homedepot.ca/en/home/p.dry-cloth-refills-32—count.1000660019.html […]

从Excel范围有效地分配单元格属性到VBA / VB.NET中的一个数组

在VBA / VB.NET中,您可以将Excel范围值分配给数组,以便更快地访问/操作。 有没有办法有效地将其他单元格属性(例如,顶部,左侧,宽度,高度)分配给一个数组? 也就是说,我想要做一些事情: Dim cellTops As Variant : cellTops = Application.ActiveSheet.UsedRange.Top 该代码是程序的一部分,以编程方式检查图像是否与工作簿中使用的单元格重叠。 我目前使用UsedRange中的单元格的方法很慢,因为它需要反复轮询单元格的顶部/左侧/宽度/高度。 更新:我将继续接受道格的答案,因为它的确工作得比天真的迭代更快。 最后,我发现一个非天真的迭代工作更快,我的目的是检测重叠内容填充单元格的控件 。 步骤基本上是: (1)通过查看每行中第一个单元格的顶部和高度来find所使用的范围中有趣的一组行(我的理解是行中的所有单元格必须具有相同的顶部和高度,宽度) (2)迭代感兴趣的行中的单元格,并仅使用单元格的左侧和右侧位置执行重叠检测。 查找有趣的一组行的代码看起来像这样: Dim feasible As Range = Nothing For r% = 1 To used.Rows.Count Dim rowTop% = used.Rows(r).Top Dim rowBottom% = rowTop + used.Rows(r).Height If rowTop <= objBottom AndAlso rowBottom >= objTop Then If feasible […]

从代码中调用Excelmacroslogging器

我需要一种以编程方式在Excel中启动macroslogging器的方式,并为将要创build的新macros提供名称。 这可以来自VSTO或VBA,或使用Office互操作程序集。 任何想法如何可以完成?

有什么工具来跟踪Excel单元格和VBA代码的依赖关系吗?

Excel具有跟踪单元格的precedents和dependents的function(通过菜单Tools > Auditing )。 例如,如果我们在C4有= C3 + 1 ,那么Excel可以追踪到C4是C3的依赖( C3是C4的先例)。 由于VBA代码也影响Excel单元格,我想知道是否有任何工具来跟踪VBA代码和Excel单元格之间的依赖关系。 例如,如果有一行VBA代码Range("C4").Value = Range("C3").Value + 1 ,是否有一个工具来跟踪C4可能是C3的依赖? 此外,如果有一行VBA代码Range("C4").Value = 5 ,有没有一个工具来跟踪C4可能会被这段代码修改?

将ActiveWindow.SelectedSheets存储为稍后参考的对象

我正在尝试编写一个macros,它将创build一个目录,列出当前用户select的每个工作表的名称,以及打印时从其开始的页码。 我已经从这个页面的代码,并适应了一下,如下所示。 但是,当创build新的工作表(“内容”)时,该工作表将成为活动的选定工作表,这样我就不能再使用ActiveWindow.SelectedSheets重新引用用户select的工作表集合。 所以我想在创build新表之前存储这些信息。 我怎样才能做到这一点? 我已经尝试将它分配给一个types为Worksheets的variables,如你所见,但是这会产生一个错误信息。 (我也尝试Collection但无济于事。) Sub CreateTableOfContents() ' Determine if there is already a Table of Contents ' Assume it is there, and if it is not, it will raise an error ' if the Err system variable is > 0, you know the sheet is not there Dim WST As Worksheet Dim […]