excel - Excel VBA_ 对象工作表的方法范围失败(运行时错误 1004)
问题描述
我在不同的模块中编写了一些 vba程序。然后,有一个 UserForm 并且在 UserForm 中有这样的 Subs,我称之为模块中的 subs:
Sub uf2_imp_new_Click()
Call a_xxx_delete '[Sub in Module A]
Call a_xxx_import '[Sub in Module A]
Call b_TransXXX '[Sub in Module B]
Call c_plist_reset_all '[Sub in Module C]
Call c_xxx_listfrom_transANB '[Sub in Module C]
End Sub
执行时,我在模块 C 子 c_xxx_listfrom_transANB 中收到运行时错误 1004“对象工作表的方法范围失败”:
Option Explicit
Sub c_xxx_listfrom_transANB()
Dim wb As Workbook
Dim ws_trans_anb As Worksheet
Dim ws_plist As Worksheet
Dim zeile_trans As Integer
Dim zeile_plist As Integer
Set wb = ThisWorkbook
Set ws_trans_anb = wb.Worksheets("Trans_XXX")
Set ws_plist = wb.Worksheets("PROJEKTLISTE")
letztezeile = ws_trans_anb.Cells(Rows.Count, 1).End(xlUp).Row
For zeile_trans = 2 To letztezeile
[...]
ws_plist.Range(Cells(zeile_plist, 2), Cells(zeile_plist, 16)).Borders(xlEdgeBottom).LineStyle = xlContinuous
Next
EndSub
发生错误时突出显示的行是
ws_plist.Range(Cells(zeile_plist, 2), Cells(zeile_plist, 16)).Borders(xlEdgeBottom).LineStyle = xlContinuous
有谁知道如何解决这个问题?我几天前对模块 c 进行了编码,从未出现过错误。但是现在当通过用户表单调用 sub 时,它不再起作用了。而且很奇怪:我通过在 VBA 中单击“播放”来执行模块 C 中的 Sub,发生错误。但是当我在模块 C 中逐步执行 Sub 时,没有错误。这对我来说太多了.. :) 任何人都可以帮忙吗?
解决方案
正如评论中提到的,没有什么能保证对 Cells() 的非限定调用将返回 ws_plist 上的范围。
所以你的线:
ws_plist.Range(Cells(zeile_plist, 2), Cells(zeile_plist, 16)).Borders(xlEdgeBottom).LineStyle = xlContinuous
应该变成:
ws_plist.Range(ws_plist.Cells(zeile_plist, 2), ws_plist.Cells(zeile_plist, 16)).Borders(xlEdgeBottom).LineStyle = xlContinuous
推荐阅读
- regex - 如何突出显示或选择 SUMPRODUCT 和 SUMIF 正在选择的单元格?
- c++ - 如何使用基于数组的二进制堆访问最小元素?
- r - 用改变 y 轴在 R 中绘图
- abap - 基于表格条目的报告选择屏幕参数下方的多个文本行
- google-cloud-platform - 对 GCP Dataproc 软件配置值感到困惑
- reactjs - 如何在 reactjs 的 componentDidMount 中检索更新的状态元素
- vue.js - 对在 nativescript-vue 中打印“object.value”感到困惑
- java - 如何从 Firebase 数据快照中获取数据?
- tensorflow - 通过 docker 详细记录 tensorflow 服务
- javascript - 我可以通过仅在 ID 中引用它来使用 Jquery 屏蔽 ASP:文本框吗?