VBA, как проверить номера строк, являются ли они четными - PullRequest
0 голосов
/ 01 марта 2019

Код работает для неверного номера детали при проверке диапазонов firstDigit.Теперь, когда код является действительным номером детали, мне нужно проверить новый набор диапазонов на предмет четности или нечетности.

Option Explicit

 Sub PartNumber()

 Dim xCell As Range

 For Each xCell In Range("firstDigit")
 If xCell Like WorksheetFunction.Rept("[A-Z]", Len(xCell)) Then

'I decided to make digits a new sub to make the code look simpler.

   Call Digits
Else
    xCell.Offset(0, 2) = "Invalid Part Number"
   xCell.Offset(0, 2).Interior.Color = vbYellow
End If
Next xCell

End Sub

Это часть, где я хочу проверить, является ли она четной или нечетной

Sub Digits()
Dim xxCell As Range
For Each xxCell In Range("productNumbers")
If xxCell = Even Then
    xxCell.Offset(0, 1) = "Ours"
    Else
    xxCell.Offset(0, 1) = "Theirs"
End if
Next xxCell
End Sub

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Логика здесь следующая:

Если номер продукта - АЛЬФА, а номер продукта - ДАЖЕ, то Ours - Зеленый
Если номер продукта - АЛЬФА и продуктномер является ODD, тогда Theirs - Красный
Если номер продукта НЕ-АЛЬФА, тогда Invalid Product Number - Желтый

Это может помочьВы получаете решения без путаницы, если вы просто указываете логику, которую хотите реализовать, когда вы показываете свой код


Нет необходимости объявлять новые диапазоны.Просто передайте ячейку, в которой вы находитесь, в вашей первой ячейке, к следующему сабвуферу.

Option Explicit

Sub PartNumber()

Dim xCell As Range

For Each xCell In Range("firstDigit")
    If xCell Like WorksheetFunction.Rept("[A-Z]", Len(xCell)) Then
        Digits xCell
    Else
        xCell.Offset(0, 2) = "Invalid Part Number"
        xCell.Offset(0, 2).Interior.Color = vbYellow
    End If
Next xCell
End Sub

Sub Digits(xCell)

For Each xCell In Range("productNumbers")
    If xCell Mod 2 = 0 Then
        xCell.Offset(0, 1) = "Ours"
        xCell.Offset(0, 1).Interior.Color = vbGreen
    Else
        xCell.Offset(0, 1) = "Theirs"
        xCell.Offset(0, 1) = vbRed
    End If
Next xCell

End Sub
0 голосов
/ 01 марта 2019

Вы можете проверить, равен ли индекс столбца Mod 2 нулю (он же является Неверным).

Sub Digits()

    Dim xxCell As Range
    For Each xxCell In Range("productNumbers")
      If Not xxCell.Column Mod 2 Then
          xxCell.Offset(0, 1) = "Ours"
      Else
          xxCell.Offset(0, 1) = "Theirs"
      End if
    Next xxCell

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...