在VBA MsgBox中循环

时间:2019-03-20 11:00:48

标签: excel vba loops msgbox

我有一些后端代码,这些代码会根据前端用户可编辑工作表(“ iButton”)的内容生成一个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

谢谢!

1 个答案:

答案 0 :(得分:0)

可能是程序化的方式(抱歉,我的VB今天有点生疏,所以仅作一般性描述):

制作有关每个按钮的信息的全局数组,并使用有关每个按钮的信息初始化数组(该信息似乎是标准的,因此可以使用用户定义的Type数组)

在工作表中添加或删除每个按钮后,仅更新此数组。

具有处理所有按钮的过程。它具有一个循环,该循环从数组的第一个条目(一个按钮)到数组的最后一个按钮,并执行通用处理。