Vba 宏表示';如果结束,则不带外块如果';但是所有的if块都在那里
我编写了一个宏,从一张工作表到另一张工作表获取一些excel数据,以便根据条件轻松使用这些数据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
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有两件事