Tag: 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 […]

下标超出范围错误Excel复制/粘贴

我正在使用下面的代码来尝试复制粘贴B4从表10到表6,然后在表6的列b中input一个时间戳。 但是,我得到subscript out of range错误的代码行*的地方。 Application.ScreenUpdating = False Dim copySheet As Worksheet Dim pasteSheet As Worksheet Set copySheet = ThisWorkbook.Sheets(Sheet10Name) **** Set pasteSheet = ThisWorkbook.Sheets(Sheet6Name) copySheet.Range("B4").Copy pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues Range("B" & (ActiveCell.Row)).Select ActiveCell.Value = Now() Application.CutCopyMode = False Application.ScreenUpdating = True 现在显然我没有得到now()在sheet6的b列中插入时间戳。 正确的最终结果 Application.ScreenUpdating = False Dim copySheet As Worksheet Dim pasteSheet As Worksheet […]

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 如果有人可以牵手,我也可以上传文件。 […]

在Access中移动logging集中的特定点

我有一个用Access VBA编写的函数。 这个function的目的是执行简单的线性插值。 它使用从inputlogging集中绘制的最近“MaturityDates”date的ZeroRates插值指定date的“ZeroRate”值。 function如下: Function CurveInterpolateRecordset(rsCurve As Recordset, InterpDate As Date) as Double Dim Q As Long Dim x1 As Date, x2 As Date, y1 As Double, y2 As Double, x As Date CurveInterpolateRecordset = Rnd() If rsCurve.RecordCount <> 0 Then Q = 1 rsCurve.MoveFirst x1 = CDate(rsCurve.Fields("MaturityDate")) y1 = CDbl(rsCurve.Fields("ZeroRate")) If InterpDate = […]

删除部分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。 提前非常感谢!

Access VBA中的strSQL不会执行

我在Access VBA中有以下代码: Sub SampleReadCurve() Dim rs As Recordset Dim iRow As Long, iField As Long Dim strSQL As String Dim CurveID As Long Dim MarkRunID As Long Dim MaxOfMarkAsofDate As Date CurveID = 15 MaxOfMarkAsofDate = #7/31/2015# strSQL = "SELECT * FROM VolatilityOutput WHERE CurveID=" & CurveID & " AND MaxOfMarkAsofDate=" & MaxOfMarkAsofDate & " […]

在Access VBA中的strSQL中循环date

我在Access中有这样的代码: Sub SampleReadCurve() Dim rs As Recordset Dim iRow As Long, iField As Long Dim strSQL As String Dim CurveID As Long Dim MarkRunID As Long Dim MaxOfMarkAsofDate As Date CurveID = 15 MaxOfMarkAsofDate = #7/22/2015# strSQL = "SELECT * FROM VolatilityOutput WHERE CurveID=" & CurveID & " AND MaxOfMarkAsofDate=#" & MaxOfMarkAsofDate & "# ORDER […]

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