Tag: error handling

VBA中的过程调用或参数错误无效

我得到这个错误,我真的不知道为什么。 我有以下一段代码: Rand = 2 LRand = ws.Cells(Rows.Count, 6).End(xlUp).Row Do While Rand <> LRand + 1 If ws.Cells(Rand, 4).Value = "" Then desch = InStr(ws.Cells(Rand, 5).Value, "(") inch = InStr(ws.Cells(Rand, 5).Value, ")") ws.Cells(Rand, 4).Value = Mid(ws.Cells(Rand, 5).Value, desch + 1, inch – desch – 1) 'here is the error End If Rand = Rand + […]

从不同的Excel工作簿收集数据到一个单一的工作簿

我有一个主要的工作簿中的一些代码。 该代码可以打开数百个(最终可能有数千个)excel工作簿。 它从每个外部工作簿中提取数据,并将该信息保存到主工作簿中的各种电子表格中。 该计划的工作 – 并已工作。 但是,我不确定这是由于代码更改还是更多的数据 – 程序在处理超过100个文件后,会为每个连续文件显示一个modal dialog,其中显示“此工作簿包含指向其他数据源“,并坚持我点击”更新“,”不更新“或”帮助“。 我现在必须通过这个有用的信息点击“不更新”100次。 我已经尝试了Application.DisplayAlerts = false它没有帮助。 处理几百个文件后,仍然在模型对话框中获得有用的消息。 无法findApplication.OverrideEveryStupidDefaultMSEverThoughtOf属性。 有没有办法解决或规避这个问题?

Excel VBA:如何停止程序并返回到代码中的某个步骤,“绕过MsgBox的模态限制”

我有一个用户界面,用户input一些信息。 然后他们按下一个button来生成报告。 但是用户不能在生成报告时打开某些文件。 如果用户打开一个文件,我想要popup一个错误消息通知他们。 然后,我想让用户修复问题(closures文件),而不必重新启动程序,因为他们已经input了信息。 我有MsgBoxpopup: Do While IsFileOpen(wfileName) MsgBox "Please close the Weights Machine Data Excel File '" & getFileName(wfileName) & "' to proceed", vbInformation, "Error" Loop 问题是一旦错误消息发生,用户不能做任何事情。 我知道MsgBox是模式,但有没有办法解决这个问题。 如果不是,我希望用户返回到按下generateReportbutton之前的点,所以他们不必重新键入他们input的任何信息。 我该如何解决这个问题?

VBA:忽略variables未设置错误

我需要根据另一范围的数据填充一系列数据。 例如,如果第一个范围包含应计pipe理费用,我将填充“closures应计(pipe理费用)”到另一个范围。 我的代码下面的作品,如果它设法find所有的领域。 但是,如果其中一个字段丢失,则会返回未设置的错误variables并停止运行。 Set FindAdmin = Worksheets("IVES").Range("A1:Z350").Find("** ACCRUED ADMINISTRATION EXPENSE", LookIn:=xlValues, lookat:=xlWhole) Range(FindAdmin.Address).Offset(, 4) = "Budget" Range(FindAdmin.Address).Offset(, 5) = "Closing Accruals (Admin Expense)" On Error Resume Next Set FindAudit = Worksheets("IVES").Range("A1:Z350").Find("** ACC AUDIT", LookIn:=xlValues, lookat:=xlWhole) Range(FindAudit.Address).Offset(, 4) = "Budget" Range(FindAudit.Address).Offset(, 5) = "Closing Accruals(Audit Expense)" On Error Resume Next Set FindLegal = Worksheets("IVES").Range("A1:Z350").Find("** PAYABLE […]

为什么这两个公式给我一个完全相同的错误值?

我有一个excel文件,其中AE61,AE62和AE63的值分别为9.97551241928828000 x10 ^( – 1),3.82933360922740 x10 ^( – 4)和2.065824710241100 x10 ^( – 3)。 (AE63 / AE61)/(0.00038 / 0.99757)-1)×1000input公式((AE63 / AE61)/(0.00205 / 0.99757)-1)时, * 1000进入AE78,我在两个单元格中得到了值7.738320123873,即使根据Wolfram Alpha我们有: ((0.000382933361 / 0.997551241928)/(0.00038 / 0.99757)-1)* 1000 = 7.738320327338977213 … 和 ((0.002065824710 / 0.997551241928)/(0.00205 / 0.99757)-1)* 1000 = 7.738320006408680641 …, 这两者不相等,不等于7.738320123873。

尝试使用Err.Clear使用On Error GoTo <label>

我在excel的几个实例上使用循环。 我正在使用几台PC和实例来查看我的数据,因此每个实例都会抓取下一个可用的文件。 如果多个实例打开相同的文件(csv格式),VBA将会出错。 我想error handling标签只是去循环中的下一个文件。 不过,我只能得到这个error handling一次。 第二次它不处理错误。 如果代码的另一部分导致error handling失败,我将完整的代码留在下面。 Sub RunRoutine() CloseOtherWorkbook Application.StatusBar = False manualcalc Calculate ListAllFile Calculate Sheets("RUN").Select Set wBRun = ActiveWorkbook Workbooks.Open Filename:=Range("FO_CalcName_Range").Value, ReadOnly:=True Set wBCalc = ActiveWorkbook wBRun.Activate For Each C In ActiveSheet.Range("FILE_RANGE_RUN").Cells Err.Clear On Error GoTo Error_handler: wBRun.Activate Sheets("RUN").Select C.Select ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate If ActiveCell.Value = False Then Application.ScreenUpdating = […]

Excel VBA – 是否可以调用子错误?

我一直在寻找,但是我找不到能够回答这个问题的东西。 我得到一个错误,我知道是什么原因造成的,这不是一个真正的问题。 如果发生此错误,只需要在运行下一行代码之前运行另一个sub。 所以这让我想知道: 是否有可能做这样的事情: On Error Call Sheet1.TestSub 提前致谢!

详细的QueryTableerror handling

下午好, 我正在寻找一种方法来处理QueryTable错误。 我已经看了谷歌和stackoverflow上的其他问题,但是他们似乎并没有回答我想问的具体问题。 基本上,有没有办法确定处理QueryTables错误时的具体错误? 码: On Error Goto queryError With Activesheet.QueryTables… …. End With queryError: Msgbox("There was an error with the QueryTables. The reason for the error was: " & myError) 有没有办法将myError设置为给出更具体的问题是什么,即使这意味着select某种状态码? 例如 QueryTables.StatusCode… 或者其他的东西? 提前致谢。

VBA Excel离开文本框时出错

我想有一个半透明的文本来显示如何inputdate的格式。 添加代码后,我发现如果我点击我的txtA_DateCR文本框,然后单击另一个文本框或命令button,错误将不断提示出来。 'This was the code that works fine before adding the following 2 below. Private Sub txtA_DateCR_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Mid(txtA_DateCR.Value, 4, 2) > 12 Then MsgBox "Invalid date, make sure format is (dd/mm/yyyy)", vbCritical txtA_DateCR.Value = vbNullString txtA_DateCR.SetFocus Exit Sub End If dDate = DateSerial(Year(Date), Month(Date), Day(Date)) txtA_DateCR.Value = Format(txtA_DateCR.Value, "dd/mm/yyyy") dDate […]

Range.Validation方法发生1004错误

我使用VBA将validation添加到另一个validation的其他单元格。 所有这个validation中的公式都有命名的范围。 我试过的: 在这个validation依赖的单元格中放置值; – 放置值后重新计算书籍 -idebugging所有代码,并且没有错误(仅在此代码中发生错误) 这是一个代码。 Public Sub MakeValidation(ByVal ValidString As String, ByVal ValidAddress As String, ByVal ValidSheet As String, ByRef WB As Workbook) Dim n As Long NewStart: Err.Clear n = n + 1 If n = 10 Then Exit Sub On Error GoTo NewStart WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Delete Debug.Print "'" & Err.Number; "'" & […]