相关疑难解决方法(0)

VBA Excel错误处理 - 特别是在函数中 - 专业的Excel开发风格

我得到了Rob Bovey的"专业Excel开发"一书,它开启了我的视野.

我正在使用错误处理重新编写代码.但是,有很多我不明白.我特别需要知道如何在函数中正确使用它.我使用Bovey的错误处理程序的重新抛出版本(在底部).当我开始时,我使用基本的布尔(非重新抛出)方法并将我的子例程转换为布尔函数.(PS我根据答案切换回布尔方法.)

我需要有关如何将功能纳入此方案的指导.我希望它们返回它们的实际值(一个字符串或双精度值,例如,如果它们在某些情况下失败则返回-1),这样我就可以将它们嵌套在其他函数中,而不仅仅返回错误处理布尔值.

这是对bDrawCellBorders(myWS)的典型子例程调用在入口点内的样子.子呼叫似乎运行良好.(即它是一个仅被转换为函数的子例程,因此它可以向错误处理方案返回一个布尔值.)

Sub UpdateMe()  ' Entry Point

    Const sSOURCE As String = "UpdateMe()"

    On Error GoTo ErrorHandler

    Set myWS = ActiveCell.Worksheet
    Set myRange = ActiveCell
    myWS.Unprotect

' lots of code

    If Not bDrawCellBorders(myWS) Then ERR.Raise glHANDLED_ERROR    ' Call subroutine

' lots of code

ErrorExit:
    On Error Resume Next
    Application.EnableEvents = True
    myWS.Protect AllowFormattingColumns:=True
    Exit Sub

ErrorHandler:
    If bCentralErrorHandler(msMODULE, sSOURCE,,True) Then  ' Call as Entry Point
        Stop
        Resume
    Else
        Resume ErrorExit
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何将其扩展到实际功能.这是基于为子程序编写的书中的一个例子,我只是将其切换为一个函数.问题:*我该怎么称呼它?它只是像x = sngDoSomeMath(17)*它的错误处理功能是否正常?*使用bReThrow …

error-handling excel vba excel-vba

9
推荐指数
2
解决办法
4万
查看次数

如何使用VBA使用Recordset填充ComboBox

专家交流teck共和国有一些文献可以 使用combobox.recordset属性来填充Access表单中的组合框.

这些控件通常在控件的"rowsource"属性中填充"SELECT*"字符串,引用应用程序客户端上可用的表或查询.当我需要在组合框中显示服务器端数据时,我创建一个临时本地表并导入请求的记录.这非常耗时,特别适用于大型桌子.

能够使用记录集来填充组合框控件将允许用户直接显示来自服务器端的数据.

受前面两个例子的启发,我写了一些代码如下:

Dim rsPersonne as ADODB.recordset
Set rsPersonne = New ADODB.Recordset

Set rsPersonne.ActiveConnection = connexionActive
rsPersonne.CursorType = adOpenDynamic
rsPersonne.LockType = adLockPessimistic
rsPersonne.CursorLocation = adUseClient

rsPersonne.Open "SELECT id_Personne, nomPersonne FROM Tbl_Personne"

fc().Controls("id_Personne").Recordset = rsPersonne
Run Code Online (Sandbox Code Playgroud)

哪里:

  • connexionActive:是我与数据库服务器的永久ADO连接
  • fc():是我当前/活跃的表格
  • controls("id_Personne"):是用于填充公司员工列表的组合框控件
  • 2003年访问版本

不幸的是,它不起作用!

在调试模式下,我能够检查记录集是否已正确创建,具有请求的列和数据,并且与组合框控件正确关联.不幸的是,当我显示表单时,我不断得到一个空的组合框,没有记录!任何帮助都非常感谢.

编辑:

这个记录集属性确实可用于特定的组合框对象,而不是标准控制对象,几天前我发现它非常惊讶.我已经尝试使用combobox的回调函数,或者使用组合框的"addItem"方法填充列表.所有这些都很耗时.

ms-access vba combobox adodb recordset

8
推荐指数
3
解决办法
8万
查看次数

错误GoTo不工作; 代码中断

我正在编写一个VBA函数,用于将数据从一个表导入到Access中的另一个表.我导入的表有更严格的数据约束(即类型,大小等),所以我期待很多错误.

我不希望筛选出现的每个VBA错误,而是希望我的记录集循环跳过整个当前记录,并在遇到错误时在单独的表中记录它.所以我插入了其他每一行On Error GoTo RecordError.但由于某种原因,它并没有处理每一个错误.我的代码只是打破并告诉我错误是什么.我已经选中了"未处理的异常中断"选项.

这是一个应该解释它的截图. 即使它本身,这个截图似乎对我没有意义.

为什么它会在错误处理程序之后立即打破?

error-handling ms-access vba access-vba

5
推荐指数
1
解决办法
2万
查看次数

用于企业项目的Access + SQL Server的替代方案

我们是一家小型软件公司,为制造设施开发有关分析,可追溯性,报告等的项目.我们使用Access作为前端,SQL Server作为后端.我们也有很大的客户,我们的公司也在增长.到目前为止它工作正常,但我想我们应该转向更有影响力的技术,如基于Web的解决方案.您如何看待Access的未来?

sql-server ms-access

4
推荐指数
1
解决办法
849
查看次数

如何启用MS Acccess VBA调试?

这真的很烦人.在MS Access VBA中,应该有换行和调试,但它总是通过我的代码而不会遇到任何中断.有没有我需要先启用它的地方?我有以下选项:

Option Compare Database
Option Explicit
Run Code Online (Sandbox Code Playgroud)

ms-access vba

1
推荐指数
1
解决办法
3万
查看次数

如何使用行号自动填充VBA编辑器?

出于调试原因,我希望在我的VBA代码中包含行号.这将使我知道发生特定错误的位置.

是否有自动功能(例如设置中的选项)?或者我需要编写自己的宏?

如果我需要编写自己的宏来完成这项任务,我该如何做这样的事情呢?

vba basic

0
推荐指数
1
解决办法
3087
查看次数