Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 宏表示';如果结束,则不带外块如果';但是所有的if块都在那里_Vba_Excel - Fatal编程技术网

Vba 宏表示';如果结束,则不带外块如果';但是所有的if块都在那里

Vba 宏表示';如果结束,则不带外块如果';但是所有的if块都在那里,vba,excel,Vba,Excel,我编写了一个宏,从一张工作表到另一张工作表获取一些excel数据,以便根据条件轻松使用这些数据 Sub page(rowNumber As Integer) Dim row_number As Integer Dim iterator As Integer Dim srch_string As String ' Searching for the string view Dim IdMethod As String Dim UIValues As Str

我编写了一个宏,从一张工作表到另一张工作表获取一些excel数据,以便根据条件轻松使用这些数据

Sub page(rowNumber As Integer)

    Dim row_number As Integer
    Dim iterator As Integer
    Dim srch_string As String ' Searching for the string view
    Dim IdMethod As String
    Dim UIValues As String
    Dim Name As String
    Dim SheetName As String
    Dim number As Integer
    Dim result As String

    result = " "
    IdMethod = " "
    UIValues = " "
    row_number = rowNumber
    iterator = row_number
    Name = ActiveWorkbook.FullName
    srch_string = "onclick"
    number = 3
    SheetName = "page"
    Application.Worksheets(SheetName).Activate
    'while   i= rowNumber
    Do While iterator > 0
        If srch_string = Worksheets(SheetName).Cells(iterator, 5) Then
          Exit Do
        Else
          IdMethod = IdMethod & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 4)
          UIValues = UIValues & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
          For Index = 2 To Worksheets("param").UsedRange.Rows.Count
             If ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5) = ActiveWorkbook.Worksheets("param").Cells(Index, 1) Then
                    Do While munber > 0
                        If result <> srch_string Then
                            Exit Do
                        Else
                            result = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            ActiveWorkbook.Worksheets("param").Cells(number, 1) = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            number = number + 1
                            iterator = iterator - 1
                        End If
             End If
             iterator = iterator - 1
    End If
    Loop
    End Sub
子页(行数为整数)
将行数设置为整数
作为整数的Dim迭代器
Dim srch_string As string'搜索字符串视图
作为字符串的Dim IdMethod
将UIC值设置为字符串
将名称设置为字符串
将SheetName设置为字符串
整数形式的数字
将结果变暗为字符串
result=“”
IdMethod=“”
UIValues=“”
行数=行数
迭代器=行数
Name=ActiveWorkbook.FullName
srch_string=“onclick”
数字=3
SheetName=“第页”
应用程序。工作表(SheetName)。激活
'而i=行数
当迭代器>0时执行
如果srch_string=Worksheets(SheetName).Cells(迭代器,5),则
退出Do
其他的
IdMethod=IdMethod&ActiveWorkbook.工作表(SheetName).单元格(迭代器,4)
UIValues=UIValues&ActiveWorkbook.工作表(SheetName).单元格(迭代器,5)
对于工作表的索引=2(“参数”).UsedRange.Rows.Count
如果ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5)=ActiveWorkbook.Worksheets(“参数”).Cells(索引,1),则
当munber>0时执行此操作
如果结果为srch_字符串,则
退出Do
其他的
结果=活动工作簿.工作表(SheetName).单元格(迭代器,5)
ActiveWorkbook.Worksheets(“param”).Cells(编号,1)=ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5)
数字=数字+1
迭代器=迭代器-1
如果结束
如果结束
迭代器=迭代器-1
如果结束
环
端接头
但是宏说End if不带out block if。。。 我不确定所有的语法
但据我所知,所有的ifs都被正确地放置了,我无法找出哪里出了问题

您缺少了下一个关闭的索引

    For Index = 2 To Worksheets("param").UsedRange.Rows.Count
编辑


正如@simoco和@brain所指出的,当使用
循环
关闭下一个索引时,还需要关闭Do

    For Index = 2 To Worksheets("param").UsedRange.Rows.Count
Sub page(rowNumber As Integer)

    Dim row_number As Integer
    Dim iterator As Integer
    Dim srch_string As String ' Searching for the string view
    Dim IdMethod As String
    Dim UIValues As String
    Dim Name As String
    Dim SheetName As String
    Dim number As Integer
    Dim result As String

    result = " "
    IdMethod = " "
    UIValues = " "
    row_number = rowNumber
    iterator = row_number
    Name = ActiveWorkbook.FullName
    srch_string = "onclick"
    number = 3
    SheetName = "page"
    Application.Worksheets(SheetName).Activate
    'while   i= rowNumber
    Do While iterator > 0
        If srch_string = Worksheets(SheetName).Cells(iterator, 5) Then
          Exit Do
        Else
          IdMethod = IdMethod & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 4)
          UIValues = UIValues & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
          For Index = 2 To Worksheets("param").UsedRange.Rows.Count
             If ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5) = ActiveWorkbook.Worksheets("param").Cells(Index, 1) Then
                    Do While munber > 0
                        If result <> srch_string Then
                            Exit Do
                        Else
                            result = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            ActiveWorkbook.Worksheets("param").Cells(number, 1) = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            number = number + 1
                            iterator = iterator - 1
                        End If
                   Next '<- Add Next Here (Missing in your code)
             End If
         Next '<- Add Next Here (Missing in your code)
             iterator = iterator - 1
    End If
    Loop
    End Sub
编辑

正如@simoco和@brain所指出的,您还需要使用
循环
子页面(行数为整数)关闭Do While number>0
Sub page(rowNumber As Integer)

    Dim row_number As Integer
    Dim iterator As Integer
    Dim srch_string As String ' Searching for the string view
    Dim IdMethod As String
    Dim UIValues As String
    Dim Name As String
    Dim SheetName As String
    Dim number As Integer
    Dim result As String

    result = " "
    IdMethod = " "
    UIValues = " "
    row_number = rowNumber
    iterator = row_number
    Name = ActiveWorkbook.FullName
    srch_string = "onclick"
    number = 3
    SheetName = "page"
    Application.Worksheets(SheetName).Activate
    'while   i= rowNumber
    Do While iterator > 0
        If srch_string = Worksheets(SheetName).Cells(iterator, 5) Then
          Exit Do
        Else
          IdMethod = IdMethod & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 4)
          UIValues = UIValues & ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
          For Index = 2 To Worksheets("param").UsedRange.Rows.Count
             If ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5) = ActiveWorkbook.Worksheets("param").Cells(Index, 1) Then
                    Do While munber > 0
                        If result <> srch_string Then
                            Exit Do
                        Else
                            result = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            ActiveWorkbook.Worksheets("param").Cells(number, 1) = ActiveWorkbook.Worksheets(SheetName).Cells(iterator, 5)
                            number = number + 1
                            iterator = iterator - 1
                        End If
                   Next '<- Add Next Here (Missing in your code)
             End If
         Next '<- Add Next Here (Missing in your code)
             iterator = iterator - 1
    End If
    Loop
    End Sub
将行数设置为整数 作为整数的Dim迭代器 Dim srch_string As string'搜索字符串视图 作为字符串的Dim IdMethod 将UIC值设置为字符串 将名称设置为字符串 将SheetName设置为字符串 整数形式的数字 将结果变暗为字符串 result=“” IdMethod=“” UIValues=“” 行数=行数 迭代器=行数 Name=ActiveWorkbook.FullName srch_string=“onclick” 数字=3 SheetName=“第页” 应用程序。工作表(SheetName)。激活 '而i=行数 当迭代器>0时执行 如果srch_string=Worksheets(SheetName).Cells(迭代器,5),则 退出Do 其他的 IdMethod=IdMethod&ActiveWorkbook.工作表(SheetName).单元格(迭代器,4) UIValues=UIValues&ActiveWorkbook.工作表(SheetName).单元格(迭代器,5) 对于工作表的索引=2(“参数”).UsedRange.Rows.Count 如果ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5)=ActiveWorkbook.Worksheets(“参数”).Cells(索引,1),则 当munber>0时执行此操作 如果结果为srch_字符串,则 退出Do 其他的 结果=活动工作簿.工作表(SheetName).单元格(迭代器,5) ActiveWorkbook.Worksheets(“param”).Cells(编号,1)=ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5) 数字=数字+1 迭代器=迭代器-1 如果结束 下一个“
子页(行号为整数)
将行数设置为整数
作为整数的Dim迭代器
Dim srch_string As string'搜索字符串视图
作为字符串的Dim IdMethod
将UIC值设置为字符串
将名称设置为字符串
将SheetName设置为字符串
整数形式的数字
将结果变暗为字符串
result=“”
IdMethod=“”
UIValues=“”
行数=行数
迭代器=行数
Name=ActiveWorkbook.FullName
srch_string=“onclick”
数字=3
SheetName=“第页”
应用程序。工作表(SheetName)。激活
'而i=行数
当迭代器>0时执行
如果srch_string=Worksheets(SheetName).Cells(迭代器,5),则
退出Do
其他的
IdMethod=IdMethod&ActiveWorkbook.工作表(SheetName).单元格(迭代器,4)
UIValues=UIValues&ActiveWorkbook.工作表(SheetName).单元格(迭代器,5)
对于工作表的索引=2(“参数”).UsedRange.Rows.Count
如果ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5)=ActiveWorkbook.Worksheets(“参数”).Cells(索引,1),则
当munber>0时执行此操作
如果结果为srch_字符串,则
退出Do
其他的
结果=活动工作簿.工作表(SheetName).单元格(迭代器,5)
ActiveWorkbook.Worksheets(“param”).Cells(编号,1)=ActiveWorkbook.Worksheets(SheetName).Cells(迭代器,5)
数字=数字+1
迭代器=迭代器-1
如果结束

下一步“你的代码有两件事:1)你错过了
Index=2的
Next Index
,2)你错过了
Do的
Loop
,而munber>0的
c有两件事