excel - 在 VBA MsgBox 中循环
问题描述
我有一些后端代码根据前端用户可编辑工作表(“iButtons”)的内容生成 MsgBox。下面的代码运行良好且非常快,但我意识到随着“iButtons”工作表的增长,我将需要随着时间的推移不必要地管理此代码。
我可以轻松地将其写入一个循环,以快速扫描 iButtons 工作表以查找工作表上所有包含内容的行(直到到达空行)?考虑到需要运行的代码量,循环是否足够快以在后台被动运行,或者 MsgBox 弹出窗口的响应是否会过慢?
Public Sub iButtons(ByVal Target As Range)
'Pulls content from the iButtons sheet
If (ActiveSheet.Name = Worksheets("iButtons").Range("A4")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B4"))) Is Nothing Then
MsgBox Worksheets("iButtons").Range("D4"), vbInformation, Worksheets("iButtons").Range("C4")
ActiveSheet.Range("A1").Select
End If
If (ActiveSheet.Name = Worksheets("iButtons").Range("A5")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B5"))) Is Nothing Then
MsgBox Worksheets("iButtons").Range("D5"), vbInformation, Worksheets("iButtons").Range("C5")
ActiveSheet.Range("A1").Select
End If
If (ActiveSheet.Name = Worksheets("iButtons").Range("A6")) And Not Intersect(Target, Target.Parent.Range(Worksheets("iButtons").Range("B6"))) Is Nothing Then
MsgBox Worksheets("iButtons").Range("D6"), vbInformation, Worksheets("iButtons").Range("C6")
ActiveSheet.Range("A1").Select
End If
End Sub
谢谢!
解决方案
一种程序化的方法可能是(对不起,我的 VB 今天有点生疏了,所以只是一般性的描述):
制作一个关于每个按钮的全局信息数组,并使用每个按钮的信息初始化数组(这些信息似乎是标准的,因此您可以使用用户定义的数组Type
)。
对于从工作表中添加或删除的每个按钮,仅更新此数组。
有一个处理所有按钮的程序。它有一个循环,从数组的第一个条目(按钮)到数组中的最后一个按钮,并执行通用处理。
推荐阅读
- reactjs - Redux Saga 中的无限循环
- c++ - 在 Cmake 中链接 libavcodec,find_library 不适用于任何库
- sh - 使用busybox sh将多行输出捕获到Bash变量中
- docker - 当我尝试在 digitalocean 上部署我的应用程序时,如何摆脱 ssl 错误?
- python - Django 'CSRFCheck' 对象没有属性 'process_request'
- wordpress - 如何通过 Filezilla 在 WordPress 上恢复以前的自定义媒体存储链接
- angular - 在 mat-form-field 控件之前设置图像图标
- python - 展开数据框中的列表,但有两列包含列表
- caching - MESI 协议 snoop 实现问题
- r - 汇总值 dplyr r