Tag: excel vba

在公式中引用其他工作表中的单元格时出错

在Excel中的公式是 =100/(INDIRECT("'History Data'!B" & M2)-100) 这里M2给出列B中的行号,这就是我使用INDIRECT函数的原因。 现在当我尝试在VBA中写这个,它会抛出一个错误,我不能find解决scheme,但我认为这是因为我引用的工作表有一个名称空间,因此我需要操纵单引号“在公式的开始和结束。 我写了这个 .Formula = "=100/(INDIRECT(" & Chr(34) & Chr(34) & "History Data" & Chr(34) & "!B" & M2 & ")-100)"

select透视列的第一项

我正在开发一个代码,以将绝对值的数据透视表转换为索引。 Private Sub Index_Change() Dim p As PivotTable Dim f As PivotField Set p = Sheets("1").PivotTables("2") With p.PivotFields("Sum of 1") .Calculation = xlPercentOf .BaseItem = "" .NumberFormat = "0,00%" End With End Sub 我正在寻找一种方法来select枢轴列的第一个单元格作为.BaseItem 。

删除没有特定文字的表单

在Excel中,我需要删除所有不以(2)结尾的表单, 下面的代码正确地删除了那些以(2)结束的代码,我只是不确定如何反转这个,'不喜欢'似乎不工作 Dim ws As Worksheet For Each ws In ThisWorkbook.Sheets If ws.Name Like "*" & "(2)" Then '~~> This check is required to ensure that you don't get an error '~~> if there is only one sheet left and it matches the delete criteria If ThisWorkbook.Sheets.Count = 1 Then MsgBox "There is only one […]

比较和突出显示时间值

我正在parsing和分析大型数据集,并试图突出显示共享同一时间的行。 这是一个较大的macros的一小部分,是目前唯一不工作(其余的工作相当好!)我试图比较每一次的时间前,它之后,以捕获所有事件。 如果我只比较以前的时间,或者比较之后的时间,那么你可能会看到这将会错过很多的价值。 码: 'Hightlights trade structures via time Do DoEvents row_number = row_number + 1 'row_color_tester is a proxy for testing trade time "structure principle" row_color_tester = row_number tradeTime = ActiveSheet.Range("B" & row_number) If tradeTime = Range("B" & (row_color_tester + 1)) Or tradeTime = Range("B" & (row_color_tester – 1)) Then ActiveCell.EntireRow.Interior.ColorIndex = 8 End […]

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

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

Excel VBA – 结合导入和导出macros

我有两个单独的名为ImportData和ExportData的macros。 ExportData将数据发送到名为Temp的表单。 它以后被发送到一个.csv文件。 所有这一切工作正常。 例如: Sheets("Orders").Range("A1:C6").Copy Sheets("Temp").Range("A55:C60").PasteSpecial xlPasteValues ImportData与ExportData相反:例如: Sheets("Temp").Range("A55:C60").Copy Sheets("Orders").Range("A1:C6").PasteSpecial xlPasteValues 有没有办法做到这一点,而不是有两个基本相同的macros,除了复制和粘贴触发翻转? 每个macros都有上百行的复制和粘贴,而不仅仅是2行。

收集环境中的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 […]

“运行时错误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

如何在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 ' […]