Tag: error handling

Excel VBA Application.Matcherror handling和消息传递

我试图将数据从Excel sheet存储到array 。 数据如下所示: 我使用的代码是: Sub StoreData() Dim Data() As String 'Count number of Line in Sheet1 Sheet1_size = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count 'Array to store data ReDim Data(1 To Sheet1_size – 1, 1 To 6) As String 'storing data into array For i = 1 To Sheet1_size – 1 With Worksheets("Sheet1") Data(i, 1) = .Cells(i + 1, […]

用IF语句检查值

非常简单的问题。 我有四列。 如果列1中的值为假OR 0或N / A,那么我想检查列2.如果列2中的值为假OR 0或N / A,那么我想检查列3。第3列是False OR 0或N / A,那么我要在第4列打印数值。我拥有的公式如下: =IF(NOT(OR(ISNA(BJ2),BJ2=FALSE,BJ2=0)),BJ2, IF(NOT(OR(ISNA(BK2),BK2=FALSE,BK2=0)),BK2, IF(NOT(OR(ISNA(BL2),BL2=FALSE,BL2=0)),BL2,BM2))) 所以BJ是第1列,BK第2列,第3列,第4列。该公式适用于False和0错误,但是当我添加ISNA部分时,它就会崩溃。 事实上,它根本就没有做任何事情。 列中的数据是string,FALSE(不是string)或#N / A作为值不可用的错误。 我用ISNA检查了一个N / A值,结果是True。 因此OR语句应该返回为TRUE,然后通过否定而成为false。 因此If语句应该跳到下一列。 什么导致这不读?

在错误不与IE自动化工作

我的代码是从一个网站获取信息,但在某些情况下,HTML代码与信息只是不存在,所以我使用On Error来处理它。 正如你将在代码中看到的,我正在遍历一个列表并获取每一行的信息(其中约700个)。 起初,错误发生在第10行,然后我添加了On Error GoTo 0 。 之后,它开始被扔在第13行。 我的configuration已经设置为断开Unhandeled错误 。 运行时错误号是: 91:对象variables或未设置块variables。 它发生在“** **” Sub GetData_DK() Dim IE As New InternetExplorer Dim URL As String Dim doc As HTMLDocument 'variable for document or data which need to be extracted out of webpage Dim onl As String Dim sto As String Dim pri As String […]

VBA代码有时工作,但有时不会在表格式化的工作表中的AutoFilter行

Private Sub CommandButton2_Click() . . Set ws1 = Sheet1 ws1.Activate 'I'd like to see the sheet that's why I activate it. It's not a bad practice. ws1.Columns.Hidden = False ws1.Rows.Hidden = False ws1.AutoFilter.ShowAllData . . 我有另一个表中的CommandButton2,每当我点击,它首先清除Sheet1中的所有filter,然后Unhidden任何列或行(如果存在)。 我尝试了很多不同的变化来解决这个问题。 我做2-3或4列过滤,然后同时隐藏一些行和列。 但不幸的是我找不到原因。 有时我的代码完美地工作。 我的意思是,它隐藏了每一个隐藏的行和列,然后清除列中的所有filter。 有趣的是,有时代码部分工作。 有时我的代码工作,但不隐藏隐藏的行/列,并没有清除filter。 所以它看起来在技术上是可行的,但不是function性的。 有时它会产生Runtime 91错误。 有时它完全不起作用并给出Runtime 91 Object variable or With Block variable not […]

无法处理运行时错误9错误转到

我有以下的代码。 但是错误没有得到处理 Sub Some_sub() Some code here On Error GoTo resumeCode If Workbooks("Some file.xlsm").ReadOnly Then GoTo readOnlyError End If resumeCode: On Error GoTo fileNotOpen Workbooks("Some file.xlsm").Activate some more code here Exit Sub fileNotOpen: MsgBox "Error: Claims followup.xlsm is not open." & Chr(10) & Chr(10) & "Open the file in read/write" Exit Sub End Sub 当我运行debugging模式时,它显示我这一行: […]

在VBA公式中使用IFERROR

我试图使用VBA从一个文件夹中的各种不同文件复制信息,然而,在一些文件中标题是“networking零售价格”,在一些“NRP”中。 我的代码查找标题文本来查找列,然后从该列复制信息。 我需要一种方式来search“networking零售价格”,然后如果它找不到“NRP”的search。 到目前为止,我可以寻找“净零售价格”,如果没有find它,它search“NRP”。 但是,如果这是相反的(即标题是净零售价格),则会引发错误。 Sub Test() Dim wb As Workbook Dim Masterwb As Workbook Dim sh As Worksheet Dim Mastersht As Worksheet Dim PasteRow As Long Dim lnRow As Long Dim lnCol As Long 'Copy out NRP lnRow = 3 On Error GoTo ErrorHandler lnCol = sh.Cells(lnRow, 1).EntireRow.Find(What:="Net Retail Price", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, […]

Excel VBA:error handling仅适用于一次传递

我搜查了很多来源,试图解决我的问题,但是我没有成功。 我是VBA的初学者,所以我的代码很可能看起来很乱。 为了提出这个问题,我会尽量保持工作表中的信息最小化 我有两张表,'数据'和'原始数字'。 数据包含“财产”和“电话号码”栏,但只有“财产”有数据。 原始数字包含相同的列,但缺less一些“属性”值,因为它只包含与这些属性相关的一定数量的电话号码。 数据表: 属性。 。 。 。 数 1 Ada St 2 Ada St 3 Ada St 4 Ada St 5 Ada St 6 Ada St 原始编号表: 属性。 。 。 。 数 1 Ada St。 。 。 。 12345678 2 Ada St。 。 。 。 12356322 5 Ada St。 。 。 […]

处理错误

我正在尝试对某些数据执行一些操作,但是它们不起作用,我需要find一种方法来忽略那些不符合所有要求的单元。 基本上,我有一个列,其中一些单元格的内容中有文本+数字,其他单元格只有文本。 我在里面search,在一列中分割文本,在另一列中分割数字。 然后,我运行一个macros来为其他列中的每一个find匹配的文本。 但是当我尝试从NUMBERS中分离TEXT时,我search了第一个“(”,导致我的数字格式是(10.10.10),但是如果没有find,单元格的值就会出现:#VALUE!(ok,它是预期的原因是没有find字符)。问题是:如果我在“#VALUE!”上运行我的macros,它会崩溃并且不能完成它的执行。 我曾尝试使用 在错误转到 在我的macros代码,但由于某种原因,它不会处理“运行时错误:types不匹配”。 For contadorOr = 2 To colO For contadorDes = 2 To colA On Error GoTo cont If InStr(1, Cells(contadorDes, colunaDestino).Value, Cells(contadorOr, colunaOrigem).Value) Then If InStr(1, Cells(contadorOr, colunaOrigem + 4).Value, Cells(contadorDes, colunaDestino + 1).Value) Then Cells(contadorOr, colunaOrigem + 5).Value = "Mesma versão" End If Exit For End If […]

VBA错误退出调用函数

我有一个简单的Excel函数连接到数据库并检索一些数据和填充工作表。 该函数调用另一个函数来build立数据库连接并返回查询结果。 如果连接到数据库时出现错误,如何退出调用函数? 这是我的function看起来像连接到数据库。 如果连接到数据库时出现错误,则会显示消息框,但是随后在调用函数中继续处理,然后出现一个难看的“END或DEBUG”消息框……这是我试图避免的。 Public Function QueryDB(sQuery As String) On Error GoTo ErrorHandler … Connect to database and get data ErrorHandler: … Display a messagebox telling the user there is an error 'Resume Next Exit Function End Function

如何处理错误:“数据透视表中没有该名称的项目”。

所以我有一个数据透视表通过用户窗体内的命令框进行修改。 如果用户键入的名字不在列表中,我得到错误 数据透视表中不存在此名称的项目。 将Name1重命名为Name2? 其中Name1是列表中的人, Name1是不在列表中的人。 我实际上得到这个错误,就像我的命令箱修改的数据透视表数量的5倍。 我尝试了以下内容: On Error Resume Next 我希望能简单地“跳过”这个问题。 不,那没办法哈哈。 虽然理想情况下,我想创build一个自定义的错误消息,只popup一次(而不是5次),并告诉用户input他们的部门/class的名字。 这个列表(我的命令箱使用的)总体上来自每个部门的每个class次的每个人,但并不是所有的人都有数据透视表中的数据,所以只是他/她们在我的命令箱用户列表中,他们不一定在数据透视表中。 我知道这是令人困惑的,但我必须这样做,所有class次使用相同的界面。 我不能访问部门内的人员名单,class次等。我只有一个大家的名单,所以这就是为什么我的命令箱必须使用它。 我还是VBA的“新手”,但是对于error handling我并不陌生。 我知道我将如何在Java中处理这个问题,而不是在VBA中。 这是代码的一部分,失败了: Range("D2").Select ActiveCell.Value = frmInd_Productivity_TrackerPS.ComboBox1.Value ActiveSheet.Range("B1").Select ActiveCell.Value = Range("F2").Value 更新:我试着在我的编码的最上面join以下内容,但是这只是使得即使当人处于数据透视表中时popup错误框,并且该东西正常工作! 不知道为什么当没有错误时popupMessageBox! On Error GoTo ErrHandler: ErrHandler: ' error handling code Resume ErrMessage: ErrMessage: MsgBox "Name not found in this Department. Please Enter a New […]