Я знаю, что уже есть тонна вопросов о создании зацикленных кодов в vBA, но, надеюсь, это будет быстрый ответ, я не смог найти страницу, посвященную этой проблеме.
Моя цель состоит в том, чтобыпроверьте значения из одного диапазона со значениями в другом диапазоне, и, если это совпадение, он выполнит функцию и отобразит результаты в конце.Однако, если соответствующее значение в диапазоне равно «N / A», я хочу, чтобы результаты отображались немедленно и переходили к следующему проверенному значению.Прямо сейчас я получаю ошибку «нет цикла» для моего кода, и я понимаю, почему.Но я не знаю, как решить эту проблему.Кто-нибудь может помочь?
Sub solubility()
Dim coeff As Range, groups As Range
Dim anion As Range
Dim a As Range
Dim nextrow As Long
Dim j As Range
Worksheets("properties").Select
Range("P7:P2000").Select
Selection.ClearContents
'solubility groups range
groups = Worksheets("Solubility").Range("A2:A33")
'group coefficients range
coeff = Worksheets("Solubility").Range("B2:B33")
anion = Worksheets("properties").Range("AB7:AB887")
For Each a In anion
For Each j In groups
If UCase(a.Value) = UCase(groups(j).Value) Then
If groups(j).Value = "" Or "N/A" Then
Worksheets("properties").Range("P" & a.Row).Value = "N/A"
Next a
Else
anvalue = coeff(j).Value * Range("AC" & a.Row).Value
End If
End If
If UCase(Range("AD" & a.Row).Value) = UCase(groups(j).Value) Then
cavalue = coeff(j).Value * Worksheets("properties").Range("AE" & a.Row).Value
If UCase(Range("AF" & a.Row).Value) = UCase(groups(j).Value) Then
cb1value = coeff(j).Value * Worksheets("properties").Range("AG" & a.Row).Value
End If
If UCase(Range("AH" & a.Row).Value) = UCase(groups(j).Value) Then
cb2value = coeff(j).Value * Worksheets("properties").Range("AI" & a.Row).Value
End If
Next j
If UCase(Range("AD" & a.Row).Value) = UCase("[MIm]") Then
cavalue = Range("AE" & a.Row) * Worksheets("solubility").Range("B2").Value + Range("AE" & a.Row) * Worksheets("solubility").Range("B7").Value
End If
nextrow = Worksheets("properties").Cells(Rows.Count, 15).End(xlUp).Offset(1, 0).Row
Worksheets("properties").Range("P" & nextrow).Value = _
anvalue + cavalue + cb1value + cb2value + Worksheets("solubility").Range("b34").Value
Next a
End Sub
У меня есть строка 'Next a' дважды, и Excel не любит это, но я хочу автоматически перейти к следующему проверенному значению, не выполняя оставшуюся функцию, если я получаю "N / A"значение.