Excel VBA - 宏循环直到lastrow

时间:2017-01-06 23:30:32

标签: excel vba excel-vba

我在Sheet3上有以下代码(我在Sheet4上有类似的代码),它是逐行工作的。

Sub Checker(argi As Long)
    If (Range("B" & argi).Text = "Insert") Then
        Call Tiers_1_to_3(argi)
        Call CI_Desc(argi)
        Call Tiers_Desc(argi)
        Call Site(argi)
        Call Support_Group_2(argi)
        Call Support_Group_3(argi)
        Call Product_Name(argi)
        Call Model_Name(argi)
        Call Mgmt_Components(argi)
        Call ITSM_Group(argi)
        Call Only_Values(argi)
        Call MandatoryColors(argi)
    End If
    Range("F" & argi + 1).Select
End Sub

这是更大的一部分,这个子'Checker'包含了对主代码起作用的所有子程序;因为这是逐行运行的,所以我想从“ThisWorkbook”表上的按钮进行投射。

我想出了几个解决方法,但我无法这样做。

Sub Refresh()
    Dim i As Long
    Dim LastRow As Long
    LastRow = Range("B" & Rows.Count).End(xlUp).Row
    For Each i In Range("F" & LastRow)
            Call Sheet4.Checker
    Next i
End Sub

工作表安排如下:

Sheet_Portal:使用Sheet3和Sheet4的快捷方式自动填充UserForm。

Sheet3:包含Checker变体1的数据输入表。

Sheet4:包含Checker变体2的数据输入表。

Thisworkbook:这是我存储所有共享信息的地方,例如将触发Checker 1和2的按钮。

长话短说,我希望你能帮助我解决这个问题。

更新#1

根据您的评论,我能够创建一个触发代码的按钮

Sub Refresh()
    Dim i As Long
    Dim LastRow As Long
    LastRow = Range("B" & Rows.Count).End(xlUp).Row
    For i = 5 To LastRow
            Call Sheet4.Checker(i)
    Next i
End Sub

请检查主要代码@ EXCEL VBA - Long Value increasing within subroutines

更新#2

请查看我使用过的表格和管理方式

Workbook arrangement

下面的ThisWorkbook代码

Private Sub Workbook_Open()
    Worksheets("Version Control").Activate
    MainPortal.Show vbModeless
End Sub
Private Sub UserForm_Click()
    MainPortal.Show vbModeless
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim i As Long
    Dim LastRow As Long
    LastRow = Range("B" & Rows.Count).End(xlUp).Row
    For i = 5 To LastRow
        If ActiveSheet.Range("B5").Value > 1 Then
            If ActiveSheet.Range("BV" & i).Value = "" Then
                Cancel = True
                MsgBox "Please complete all mandatory values"
            Exit Sub
            Else
            End If
        End If
    Next i
End Sub
Sub Refresh()
    Dim i As Long
    Dim LastRow As Long
    LastRow = Range("B" & Rows.Count).End(xlUp).Row
    For i = 5 To LastRow
            Call Sheet4.Checker(i)
    Next i
End Sub

ThisWorkbook存储一个Workbook_Open,用于在文件及其主按钮开始时打开一个userForm,一个Workbook_BeforeSave检查两个值是否为空,然后保存文件被禁用和刷新按钮。 主文件存储类似的Workbook_BeforeSave,用于检查必填字段。

0 个答案:

没有答案