我在下面的代码中迭代了特定范围的行,如果存在值(代码未见),则创建整个页面的副本。我关注的是r1迭代中代码的底部。它最初只有一个条件语句......
If BiDiRowValid(r1)
我想添加第二个条件语句,我做了......
and Range("MAIN_BIDI_PINMC") <> "No BiDi"
但是当我运行代码并且MAIN_BIDI_PINMC范围=“No BiDi”时,它出错并且没有超过该行。仅供参考:IsBiDiRowValid()是一个函数,它检查特定的r1是否为空,然后继续。在该子例程完成并退出之后,我的代码错误出现“类型不匹配错误”。我还在底部添加了ElseIf
行,我没有得到那个代码,因为最顶层的错误,但我只是想确保我正确地编写这个迭代,并且还有其他什么需要完成。基本上,如果在范围内找到“NoBiDi”,我希望它跳过所有这些代码并转到下一个r1 ...这是我认为我写的...提前谢谢!
Private Sub start_new()
Dim MC_List As Range
Dim r1 As Range
Dim biDiPinName As Range
Dim Pin As String
Dim mc As String
Dim mType As String
Dim tabName As String
Dim rowNumber As Integer
Dim pinmcSplit() As String
Dim NoBidi As String
On Error GoTo start_biDi_tr_new_Error
Set MC_List = Range("MAIN_PINMC_TABLE")
Set biDiPinName = Range("MAIN_PIN2_NAME")
For Each r1 In MC_List.Rows
If IsBiDiRowValid(r1) And WorksheetFunction.CountIf(Worksheets("MAIN").Range("MAIN_BIDI_PINMC", "No Bidi") = 0 Then
tabName = r1.Cells(1, 8)
pinmcSplit = Split(tabName, "_")
Pin = pinmcSplit(0)
mc = pinmcSplit(1)
mType = r1.Cells(1, 3)
ElseIf WorksheetFunction.CountIf(Worksheets("MAIN").Range("MAIN_BIDI_PINMC"), "No Bidi") = 1 Then
End If
Next
答案 0 :(得分:4)
您收到该错误,因为Range("MAIN_BIDI_PINMC")
不是单个单元格。要检查多个单元格中的值,您可以使用Application.Worksheetfunction.Countif
修改强>
在聊天中发布讨论,用户想要遍历每个单元格。
Dim aCell As Range
For Each r1 In MC_List.Rows
If IsBiDiRowValid(r1) Then
For Each aCell In Worksheets("MAIN").Range("MAIN_BIDI_PINMC")
If aCell.Value <> "No Bidi" Then
tabName = r1.Cells(1, 8)
pinmcSplit = Split(tabName, "_")
Pin = pinmcSplit(0)
mc = pinmcSplit(1)
mType = r1.Cells(1, 3)
End If
Next
ElseIf aCell.Value = "No Bidi" Then
'~~> Do Something
End If
Next