Tag: vba

函数中的Excel VBA加载工作表

我正在尝试编写一个函数来查找外部工作表的第一行。 我可以做一个子,但它不是作为一个function。 可以这样做。 目前我正在使用 Function GetLine(fileName As String) As Boolean GetLine = 0 Dim loadBook As Workbook If loadBook = Application.Workbooks.Open(fileName) Then GetLine = True Else GetLine = False End If end function 我得到#value的回报。 我认为这是因为加载工作簿时出错。 请指教,谢谢。

根据条件删除行

我希望有人可以帮助这段代码。 如果我在列A中find文本“FemImplant”,我试图删除整行。棘手的部分是,这个文本是由'$'链接的句子的一部分。 所以我需要在“$”之前parsing出单元格的内容,看它是否与“FemImplant”匹配并删除该行。 这是我迄今为止,但它没有工作。 Dim cell As Excel.Range RowCount = DataSheet.UsedRange.Rows.Count Set col = DataSheet.Range("A1:A" & RowCount) Dim SheetName As String Dim ParsedCell() As String For Each cell In col ParsedCell = cell.Value.Split("$") SheetName = ParsedCell(0) If SheetName = "FemImplant" Then cell.EntireRow.Delete Shift:=xlUp End If 下一个

如何将图表从Excel复制到PowerPoint?

有什么办法可以将excel电子表格中的图表复制到一个简报中, 保留原始格式并embedded数据 ? 已经有一个关于以编程方式复制粘贴图表的问题 。 但是,关于数据embedded没有任何说法 最大的问题是embedded数据。 据我所知,数据embedded需要从功率点开始重新创build图表。 (PS:通过embedded我不是指链接到一个外部的Excel文件。)

使用Excel VBA查找工作簿中的所有匹配项

我正在尝试编写一个VBA例程,它将接收一个string,search给定的Excel工作簿,并返回所有可能的匹配项。 我目前有一个工作的实现,但它是非常缓慢的,因为它是一个双循环。 当然,内置的Excel Findfunction是“优化”来find一个匹配,但我希望它返回一个初始匹配数组,然后我可以应用更多的方法。 我会发布一些我已经有的伪代码 For all sheets in workbook For all used rows in worksheet If cell matches search string do some stuff end end end 如前所述,这个双循环使事情运行非常缓慢,所以我正在寻求摆脱这个如果可能的话。 有什么build议么? UPDATE 虽然下面的答案会改善我的方法,但我最终还是采取了稍微不同的做法,因为我需要一遍又一遍地做多个查询。 我决定循环遍历文档中的所有行,并创build一个包含每个唯一行的键的字典。 这个指向的值将会是一个可能的匹配列表,所以当我稍后查询时,我可以简单地检查它是否存在,如果是的话,只需要获得一个匹配的快速列表。 基本上只是做一个初始扫描,将所有内容都存储在可pipe理的结构中,然后查询可以在O(1)时间内完成的结构

使用excel vba过滤掉多个条件

A列中有8个variables,1,2,3,4,5和A,B,C 我的目标是过滤掉A,B,C,只显示1-5。 我可以使用下面的代码来做到这一点: My_Range.AutoFilter Field:=1, Criteria1:=Array("1", "2", "3","4","5"), Operator:=xlFilterValues 但是代码做的是过滤variables1到5并显示它们。 我不想做相反的事情,但是通过筛选出A,B,C并显示variables1到5,得到相同的结果 我试过这个代码: My_Range.AutoFilter Field:=1, Criteria1:=Array("<>A", "<>B", "<>C"), Operator:=xlFilterValues 但它没有工作。 为什么不能使用这个代码? 它给出了这个错误: 范围类的运行时错误1004 autofilter方法失败 我该怎么做?

Excel VBA如果工作表(“wsName”)存在

我想知道是否有干净的切割function返回True或False如果工作簿内的工作簿存在? 如果可以在不跳过error handling的情况下做到这一点,那将是好事,但不是必须的。 我发现的唯一的东西并不真正的工作: On Error Resume Next If (Worksheets("wsName").Name <> "") Then Debug.Print "Worksheet exists!" Else Debug.Print "Worksheet doesn't exist!" End If On Error GoTo ErrHandler

如何使用单元格内的hex颜色值突出显示单元格?

我有一个符号和匹配hex颜色的电子表格。 我想用单元格内的hex颜色填充单元格本身(或旁边的单元格)。 我已经读了一些关于“条件格式化”的内容,我认为这是做到这一点的方法。 我怎么能达到我想要的结果?

使用VBA获取扩展文件属性

尝试使用Excel VBA从磁盘上的文件捕获所有文件属性,包括扩展属性。 能够让它遍历文件并捕获基本属性(来自文件系统): 文件path 文件名 文件大小 创builddate 上次访问date 上次修改date 文件types 还想捕获来自文件本身的扩展属性: 作者 关键词 注释 上次作者 类别 学科 和右击文件时可见的其他属性。 目标是创build文件服务器上所有文件的详细列表。

为什么我有问题分配一个范围到一个variables数组

我有一些非常简单的代码行几个问题。 让我详细说明事实,看看是否有其他人可以复制这种行为。 如果任何人可以复制,我想解释为什么发生。 所以,让我从一个非常简单的代码行开始工作: Dim arr() As Variant arr = Range("A1:A10") 如预期的那样, arr被赋予A1:A10的值A1:A10 现在为什么不会有以下代码行? Dim arr() As Variant arr = WorkSheets("Sheet1").Range("A1:A10") 我得到了运行时错误'13'types不匹配,即使相同的范围已成功地分配给数组,即使没有工作表值。 但 Dim arr As Variant arr = Worksheets("Sheet1").Range("A1:A10") 和 Dim arr() As Variant arr = Application.Transpose(Application.Transpose(Worksheets("Sheet1").Range("A1:A10"))) 能工作吗? 现在,在你回答之前,请让我给你更多的事实。 Dim arr() As Variant arr = Worksheets(1).Range("A1:A10") 不起作用 并使用Sheets代替Worksheets也都给出了相同的错误。 我已经通过使用Range("A1:A10").Worksheet.Name确保它与活动引用表单相同Range("A1:A10").Worksheet.Name在工作代码之后,它确实在输出中表示Sheet1 。 没有其他工作簿是开放的,所以它不能引用另一个工作簿。 现在,这最后一点的代码只会增加我的困惑,因为它完全有效! Dim arr() […]

Outlook VBA – 每半小时运行一次代码

我想每半小时在Outlook(VBA)中运行一个特定的代码。 代码运行时outlook用户也不应该受到干扰。 它应该只在后端运行。 有一个名为Application_Reminder的事件。 它在每次发生提醒时都会运行。 但是这仍然涉及用户交互。 我想要一个完整的后端程序。