Tag: excel vba

单独的工作簿的path

我写了一个macros作为一个AddIn,以便它可以在我打开的任何工作簿中使用。 这个macros会自动将Excel文件保存为CSV文件。 当我打开一个新的工作簿(newwb.xlsx)并应用这个AddIn时,我想让我的代码自动find保存这个newwb.xlsx的path,并将它保存在同一个位置。 我在网上findApplication.ActiveWorkbook.Path可以用来定位path本身和Application.ActiveWorkbook.FullName与工作簿名称的path。 但是,它只返回AddIn文件的path名,而不是newwb.xlsx的path名。 如何获取新工作簿文件的文件path? 这是我的代码: 'Declare the data type of the variables Dim wks As Worksheet Dim lastCol As Integer Dim lastRow As Long Dim iCol As Integer Dim iRow As Long Dim sFilename As String Dim cellValue As String Dim MyTextFile 'Set wks to the current active worksheet Set wks = ActiveWorkbook.ActiveSheet […]

vlookup多个表单,并在另一个表单中报告

我正在使用一个工作簿,其中包含许多客户的“计划付款”,每个工作表都有一个。 表单具有这种结构 – date – 价值 – 名称 – 银行 – 城市 我需要做的是search一个DATE,并将所有具有该date的行复制到另一个名为“Busca”的工作表中,在所有工作表中search。 我是初学者,我的代码草图到目前为止: Sub Pesquisa() Dim data As Variant 'declarando a variável que vai receber a data a ser buscada Dim linha As String 'declarando a variável que vai receber o dado encontrado On Error Resume Next Worksheets("Busca").Range("relatorio").ClearContents data = B1 End Sub 如果有人可以牵手,我也可以上传文件。 […]

Excel可以查找变化字段的三个字符

对于我的工作,我创build了一个VBA代码,用于将显示当月采购的报表添加到包含所有帐户和库存的主工作表中。 我需要从采购订单编号中提取该地区,但这取决于采购types。 该地区将始终是6位数字左侧的前三个字符: ABC 123456A。 在这种情况下,我需要提取字母ABC。 但是,这取决于订单的types。 有些订单会在前面的订单号码和一个下划线(如XYZABC_ ABC 123456A)中添加一个子区域。 如果订单是换一个新账户的话,右边的最后一个字母就是A,如果订单是托运的话就是C,但是如果是矫形器和假肢,它会变成OP: ABC 123456OP 我需要一个公式来帮助我具体提取那些在字符数可能不同的情况下在6位之前出现的三字母区域。 请帮忙。

删除部分string

我有这个代码,这是90-95%的时间,但有一段时间,它只会删除部分,我想删除。 While InStr(fnd, SCHFR) <= 0 And c <= 300 c = c + 1 fnd = Sheet1.Cells(c, 8) Wend If c >= 300 Then Sheet2.Cells(r, cmn) = "Not found" Else cleanup = InStr(1, fnd, ": ") finalString = Right(fnd, Len(fnd) – cleanup – 1) Sheet2.Cells(r, cmn) = finalString End If scnm = scnm + […]

禁用单元自动更新

我有一个单元,我想logging左边相邻单元格更改的时间。 我用NOW()函数来做。 但是,问题是每次重新计算工作簿时都会更新。 所以,我想知道是否有任何原始的方式来防止这个非常自动更新的单元格。 我个人已经想出了这个: Private Sub Workbook_Open() Application.Calculation = xlCalculationManual End Sub 和这个: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.Calculation = xlCalculationManual End Sub 所以问题是有没有其他更好的方法来实现这个问题。 除了当前使用的“NOW()”function之外,我还想知道如何logging时间,以便在相邻数据更改时logging,而不是在重新计算工作簿本身时logging。 提前非常感谢!

在Excel VBA中input特殊字符

如何在Excel VBA中input特殊字符? 例如,如果我想在某些string中使用“●”(大的互斥),它们都显示为“?”。 我试图用●replace所有“●” 在VBA但它没有工作,只是显示● 在string中。

如何dynamic引用vba对象?

有一个优秀的VBAforms,有多个下拉(超过10)。 这些下拉列表使用类似于此的代码填充: With Me.Controls("MyComboBox") .Clear Do .AddItem MyRecordSet![MyColumn] MyRecordSet.MoveNext Loop Until MyRecordSet.EOF End With 有没有办法来dynamic设置“MyComboBox”,“MyRecordSet”,“MyColumn”对象的值? 目标是将所有的combobox填充到一个循环中,而不是必须一遍又一遍地具有10多套相同的代码。 “MyComboBox”和“MyRecordSet”对象具有相似的名称,但不相同。

无法获取字符类的文本属性

这是一个摘录forms,我在VBA工作的Excel 2010macros,我遇到的问题是DelStrikethroughs 每当单元格中的值为“TRUE”,“FALSE”或“#N / A”(当其“#N / A”macros崩溃时),函数返回一个空string。 进一步调查时,它看起来像variablesx.text总是空白,并有错误"Unable to get the text property of the characters class"当我尝试debugging它。 有想法该怎么解决这个吗? (我很高兴函数返回原始文本,如果它不能通过文本删除罢工,但一个适当的解决scheme是首选) 以下是代码示例: Sub testx() Dim testRange As Range Set testRange = selection Call DelStrikethroughs(testRange.Cells(1, 1)) End Sub Function DelStrikethroughs(Cell As Range) As String 'Returns the text value of a cell with strikethrough characters removed Dim NewText As […]

错误在Excel列表中查找多个date范围

获取对象variables或variables未设置错误。 所有我想要做的是定位自己能够分析从newStartDate到newEndDate的数据,并将其与oldStartDate和oldEndDate之间的数据进行比较。 在“主列表”finddate的地址时感到困惑不确定为什么我在这个问题上挣扎这是一个简单的任务,但我似乎无法解决这个错误。 有什么想法吗? 我已经阅读了类似这个其他职位,似乎无法弄清楚我在做什么不同。 在此先感谢代码如下: 注意:1/1/14是在newStartDate范围内设置的date。 这个date并不存在,因为直到第二天才开展业务。 我在一个post中发现,如果没有find确切的date,底部的“Set newStartDateFinder”行会find下一个最接近的date..我开始认为情况并非如此,因为当我尝试运行debugging器它似乎是空的。 Option Explicit Sub Gather_Calculate_Performance() 'Variable declaration Dim EBM As Workbook Dim masterList, controlOut As Worksheet Dim newStartDate As Range Dim newEndDate As Range Dim oldStartDate As Range Dim oldEndDate As Range Dim newStartDateFinder As Range Dim newEndDateFinder As Range Dim oldStartDateFinder As Range Dim oldEndDateFinder […]

每当你改变你正在编辑的行时,运行一个VBA代码

我需要在excel VBA中运行代码,只要你改变你正在处理的行。 我的代码更新其他工作簿,每当你编辑的东西,但由于所有的信息在行中应该更新1工作簿,我希望它打开并更新其他工作簿只有当你停止工作在一行(任何行) 现在我有一个代码更新另一个工作簿,当我改变一个单元格,所以这就是我所拥有的。 Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("A1:C10") Dim WB As Workbook Dim dirFile As String Dim strFile As String Dim Actual As Workbook Static lngRow As Long Dim linea Set Actual = ActiveWorkbook If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then MsgBox "Cell " […]