VBA中的error handling有什么好的模式? 特别是在这种情况下我该怎么做: … some code … … some code where an error might occur … … some code … … some other code where a different error might occur … … some other code … … some code that must always be run (like a finally block) … 我想要处理这两个错误,并在错误发生后的代码之后恢复执行。 另外,最后的代码必须总是运行 – 不pipe之前抛出什么exception。 我怎样才能达到这个结果?
我想要一个Excel电子表格,在列A中有一个文件path和名称。当一个macros运行时,让我们说在A1中指定的文件应该在用户的机器上打开。 该文件可以是.doc,.xls,.txt等….而不是我的vba需要知道应用程序的完整path,我怎么可以告诉机器vba“请打开这个文件,并使用您的应用程序与扩展关联“? 我已经find了这个工作的完整path: dblShellReturned = Shell("C:\Windows\System32\notepad.exe myfile.txt, vbNormalFocus) 我怎么能得到它与如下工作: dblShellReturned = Shell("myfile.txt", vbNormalFocus) ' how do I get this to work 先谢谢你!
select范围时遇到错误1004“应用程序定义或对象定义的错误”的问题。 我仍然可以select行(即Rows("21:21").select ),并在同一工作簿的其他工作表中select范围。 我不相信错误是在代码中。 也许它的一些设置我不知道? 我之前使用过相同的代码,但是由于某种原因,我不能在这个子函数中使用它(我已经评论了错误发生的地方)… Sub CopySheet1_to_PasteSheet2() Dim CLastFundRow As Integer Dim CFirstBlankRow As Integer 'Finds last row of content Windows("Excel.xlsm").Activate Sheets("Sheet1").Activate Range("C21").Select '>>>Error 1004 "Application-defined or Object-defined error" Occurs Selection.End(xlDown).Select CLastFundRow = ActiveCell.Row 'Finds first row without content CFirstBlankRow = CLastFundRow + 1 'Copy Data Range("A21:C" & CLastFundRow).Select Selection.Copy 'Paste Data Values Sheets("PalTrakExport […]
如果我在Excel中设置了一个自动filter,并且我想用VBA代码遍历一列中的所有可见数据,那么最简单的方法是什么? 所有已被过滤掉的隐藏行都不应该包含在内,所以从上到下的简单范围不会有帮助。 任何好主意? 谢谢。
我有一个相当大的查询,join了十几个表,我想拉回基于id字段的logging( 例如 : between nStartID and nEndID )。 我创build了两个参数,并将其作为标准进行testing,并且工作正常。 问题是,我需要从主查询中运行一个插入查询,并且在主查询中需要它们所在的参数。 所以,我需要传递参数给它编程。 任何人都知道如何做到这一点? 谢谢。
我刚刚在VBA(Access 2003)的“编译器错误”中引起了一个恼人的30分钟,这是由于我使用括号来传递给我定义的参数。 我一直在寻找一个体面的文章/教程/指示,何时括号是必要/适当/不适当/禁止,但找不到任何明确的指导方针。
下面的示例…从parsing的JSONstring中循环一个对象返回一个错误“对象不支持此属性或方法”。 任何人都可以build议如何使这项工作? 非常感谢(我在这里问了6个小时之前寻找答案)。 将JSONstringparsing到对象中的function(此工作正常)。 Function jsonDecode(jsonString As Variant) Set sc = CreateObject("ScriptControl"): sc.Language = "JScript" Set jsonDecode = sc.Eval("(" + jsonString + ")") End Function 循环通过parsing对象返回错误“对象不支持此属性或方法”。 Sub TestJsonParsing() Dim arr As Object 'Parse the json array into here Dim jsonString As String 'This works fine jsonString = "{'key1':'value1','key2':'value2'}" Set arr = jsonDecode(jsonString) MsgBox arr.key1 'Works […]
我正在做一个Excel应用程序,需要从数据库进行大量数据更新,因此需要时间。 我想在用户窗体中创build一个进度条,并在数据更新时popup。 我想要的酒吧只是一个小小的蓝色酒吧左右移动,并重复,直到更新完成,没有百分比需要。 我知道我应该使用progressbar控件,但我尝试了一段时间,但不能做到这一点。 编辑:我的问题是progressbar控件,我不能看到“进度”栏,它只是当表格popup完成。 我使用一个循环和DoEvent但是这是行不通的。 另外,我想要重复这个过程,而不是一次。
从我在网上看到的情况来看,这是一个相当普遍的抱怨,但答案似乎更为罕见。 问题是这样的: 我们有许多Excel VBA应用程序,可以在许多用户的机器上完美工作。 然而,在一台机器上,他们停止了某些代码行。 它总是一样的线条,但是这些线条似乎没有任何共同之处。 如果在停机后按F5(运行),应用程序将继续运行,因此几乎就像已经添加了一个断点。 我们尝试从菜单中select“删除所有中断”,甚至添加中断并再次删除。 之前我们已经遇到了单个应用程序的这个问题,我们通过从模块中删除代码,编译并粘贴回来等等来“拦住”它。 现在的问题似乎与Excel本身相关,而不是一个单一的.xls,所以我们有点不确定如何pipe理。 任何帮助将感激地收到:) 谢谢, 菲利普惠廷顿
这种转变正是我想要实现的。 只是为了说明,我已经把它作为表。所以基本上,前3列应该重复有多less颜色可用。 我search了其他类似的,但是当我想要重复多列的时候找不到。 我发现这个代码在线,但它是名称感谢位置感谢位置感谢位置感谢位置,并使其如下名称谢谢位置 Sub createData() Dim dSht As Worksheet Dim sSht As Worksheet Dim colCount As Long Dim endRow As Long Dim endRow2 As Long Set dSht = Sheets("Sheet1") 'Where the data sits Set sSht = Sheets("Sheet2") 'Where the transposed data goes sSht.Range("A2:C60000").ClearContents colCount = dSht.Range("A1").End(xlToRight).Column '// loops through all the columns extracting data […]