Tag: vba

如何制作两个标准,如果其中任何一个fullfil的代码将autofilter呢?

代码工作正常的单一标准。 我想根据OR条件的两个标准使其工作。 如果满足任何一个条件,它将自动过滤数据。 Sub FilterCopyToOtherSheet() ' Sheets("Sheet1").Range("A1:C7").AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Sheet1").Range("E1:E2"), _ CopyToRange:=Sheets("Sheet2").Range("A1"), _ Unique:=False End Sub

正确保存内存中的引用而不是激活

你如何正确地保存对某个单元格的引用,比如 Dim x As WHAT_TYPE_? x = location_of_cell_in_memory 而不是激活它? 我不想通过激活单元格( .Select或.Activate )来迭代,然后使用偏移量向上或向下移动。 这应该在屏幕上没有发生任何事情的情况下完成,只需在后台检索和分配值,这样用户就不能在屏幕上的某处点击并毁坏脚本。 要么 我真的必须自己定义一些Pair-Datatype(x,y)并将其用作单元表示吗? 要么 作为三重(单,x,y)? 我甚至不确定在VBA中甚至可能,我来自Java。

根据两个条件连接列中的某些单元格

我有一个不同的足球队和他们的小队的Excel工作表,以及有关个人球员的信息。 我想要做的是从我的桌子上连接某些单元格,并将这些数据放到一个更简单的表格中供其他用户查看,例如,显示所有团队当前正在受伤的玩家。 我会解释一下: F_Team | Player | Injured Liverpool Coutinho 0 Liverpool Benteke 1 Liverpool Sturridge 1 Man U Rooney 1 Chelsea Sterling 0 所以在我的另一张桌子里,看起来像这样 F_Team | Players Injured Liverpool Benteke, Sturridge Man U Rooney 所以数据可以分组到单个团队,我只是试图连接它正确。 我曾尝试使用这个VBA,但它回来的是#NAME? 我不知道为什么,我不知道我在做什么是正确的。 Function ConcatenateIf(CriteriaRange As Range, criteriarange2 As Range, _ Condition As Variant, condition2 As Variant, ConcatenateRange As Range, […]

收集环境中的error handling

我有一个macros使用存储在集合中的头名称将input表的内容复制到输出表。 码: Sub Process_Data() Dim rawSht As Worksheet Dim procSht As Worksheet Dim headers As Collection Dim c As Integer Dim v As Variant Set rawSht = ThisWorkbook.Worksheets("Backend – raw") Set procSht = ThisWorkbook.Worksheets("Backend – processed") Set headers = New Collection For c = 1 To rawSht.Cells(4, Columns.Count).End(xlToLeft).Column headers.Add c, rawSht.Cells(4, c).Text Next For c […]

新的GMail格式是抛出我的Excel VBA代码

GMail最近进行了一些更改,不再支持单页login格式,而是login时切换到逐页login(至less这就是我所说的)。我正在testing我的代码input电子邮件地址(或用户)并单击“下一步”button进入密码页面的Excel VBA,然后用密码页面重复该过程。 在我的Excel 2010程序中被检查的参考是: Visual Basic for Applications Microsoft Excel 14.0对象库 Microsoft Office 14.0对象库 OLE自动化 Microsoft Forms 2.0库 微软互联网控制 Microsoft HTML对象库 电子邮件字段被填充,但之后,编译器会抛出运行时错误438,并且不会前进。 我知道答案可能是在我的鼻子下,但我似乎无法弄清楚发生了什么事情。 我试图得到“下一步”button的HTML ID,但无济于事。 我只是卡住了。 Option Explicit Dim HTMLDoc As HTMLDocument Dim MyBrowser As InternetExplorer Sub MyGmail() Dim MyHTML_Element As IHTMLElement Dim MyURL As String MyURL = "https://www.gmail.com" Set MyBrowser = New InternetExplorer MyBrowser.Silent […]

“运行时错误91”设置variables

我遇到了一个运行过去曾经工作过的VBA脚本的问题。 代码尝试从已经生成的数据库和Excel工作表中获取数据,然后运行更多计算来创build可用的统计信息。 这部分是错误的地方: Dim strCat, strPlan, strCustodian As String Dim i, lAssets As Long Dim cn As ADODB.Connection, rs As ADODB.Recordset 'ms access connection Public Const cnnstr As String = "Provider=Microsoft.ACE.OLEDB.12.0; " & _ "Data Source=G:\OADBO.accdb;" Dim rngA, rngB As Range Option Explicit Private Sub MapExisting() Set rngA = wsEntry.Range("A1") For i = 1 To […]

在范围内查找文本并插入新行

对于解决这个问题我有一些想法,但是我不知道如何在VBA中一起处理这两个单独的函数的链接。 我希望代码能够find在一个范围内不是空白的单元格,并插入一个新的行与其各自的数据。 例: No abcd q1 q2 q3 q4 q5 1 XXXX poor rubbish 2 YYYY excellent great 数据可以出现在q1和q5之间的任何地方,我希望VBA将q1 – q5中的每个响应与单独的一行分开。 因此,我假设我需要一个循环函数来查看q1和q5之间的单元格是否不是空白的,从这个我想新行分隔每个响应与自己的行,但我不确定如何告诉VBA在q2下留下“穷人”,并寻找下一个非空白,并采取非空白,并插入一个新的行(所以'垃圾'应采取新的行,但从原来的行删除,所以“穷人”可以拥有自己的独立线路)。 最终的结果应该是这样的: No abcd q1 q2 q3 q4 q5 1 XXXX poor 1 XXXX rubbish 2 YYYY excellent 2 YYYY great

“Range.Find”testing没有说“Object Required”

为什么我运行这段代码的时候会得到一个对象是必需的错误? Dim mitarbeiterStatus Dim mitarbeiterCell As Variant Set mitarbeiterCell = Nothing Dim rowsinWorkflow As Integer rowsinWorkflow = Worksheets("worksheet1").Range("A1").End(xlDown).Row With Worksheets("worksheet1").Range("B2:B" & rowsinWorkflow) Dim firstAddress mitarbeiterCell = .Find(displayName, LookIn:=xlValues) If Not mitarbeiterCell Is Nothing Then 'ERROR HERE firstAddress = mitarbeiterCell.Address Do '….. Set mitarbeiterCell = .FindNext(displayName) Loop While Not c Is Nothing And mitarbeiterCell.Address <> firstAddress […]

如何在Worksheet代码中声明和使用公用函数和子例程

我在我的工作表模块中声明了一个公共函数: Public Function isValidContract(contract As String) As Boolean ' Code reads cell values from the worksheet and determines ' if passed-in contract is one of them. End Function 我想能够从其他模块和类模块访问它。 我已经尝试了以下内容: Public Sub someRandomSubInAntoherModule() Dim contract As String Dim sh as Worksheet ' Code that sets contract Set sh = Sheets("Matrix") If Not sh.isValidContract(contract) Then ' […]

将数据导出到单个CSV文件

使用VBA将Excel 2010中的数据导出为CSV格式的特定范围的单元格的有效方法是什么? 数据总是从单元格A3开始。 范围的结尾取决于数据集(总是列Q,但行结束可能会有所不同)。 它应该只从名为“内容”的工作表2导出数据,而单元格只需包含“真实”数据(如文本或数字),而不是包含公式的空值。 单元格具有公式的原因是因为它们引用表1和3中的单元格。公式使用常规引用和垂直search。 使用UsedRange将导出Excel使用的所有单元格。 这个工作,但它也最终导出所有包含公式的空单元格,但没有数据导致在输出.csv中产生大量(510)精确)不必要的分号。 Sub SavetoCSV() Dim Fname As String Sheets("Content").UsedRange.Select Selection.Copy Fname = "C:\Test\test.csv" Workbooks.Add ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:=Fname, _ FileFormat:=xlCSV, CreateBackup:=False, local:=True Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub 一种解决scheme可能是用Offset或Resize来改变VB代码中的UsedRange。 另一个可能是创build一个RealRangevariables,然后selectcopy。 类似的问题已经被不止一次地问过,就像这里 , 这里和这里一样 ,我也看了SpecialCells,但不知怎的,我不能按照我想要的方式工作。 我已经尝试了下面的代码,但它最终也添加了表3中的行。 Sub ExportToCSV() Dim Fname As String Dim RealRange As String Dim Startrow […]