Если ячейки диапазона содержат числа или пустые ячейки, то - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать проект VBA, например this , но мне трудно использовать функцию LIKE, и, кажется, ничего не происходит, когда я нажимаю кнопку запуска.

Что я пытаюсь сделать :

  • Если первая цифра является либо цифрой, либо пустой ячейкой в ​​B4: B245, введите текст в диапазоне D4: 245.
  • Если последняя цифра цифры четна в C4: C245, введите текст в диапазоне D4: D245.

Дополнительная информация :

  • Коды товаров были импортированы
  • Функция LEFT была использована для поиска «Первой цифры кода продукта»
  • Функция RIGHT была использована для поиска «Числовых цифр кода продукта»"

Моя текущая позиция в excel и VBA:

Sub number()

Dim first As Range
    Set first = Range("B4:B259")

Dim numeric As Range
    Set numeric = Range("C4:B259")

Dim DColumn As Range
    Set DColumn = Range("D4:D259")

For Each first In DColumn
    If first Like " " Then
        DColumn = "Invalid Part Number"
        DColumn.Interior.ColorIndex = 6
End If
Next

End Sub

1 Ответ

0 голосов
/ 28 февраля 2019

Приведенный ниже макрос выполнит 3 теста, и каждый получит свой собственный вывод.

  1. Проверка на наличие числового или пустого первого символа
  2. Проверка на четный конечный символ
  3. Проверьте наличие нечетного завершающего символа

Эти тесты не совпадают - вывод будет один или ни одного.Как только оператор проверки будет TRUE, цикл для этой ячейки завершится, и другие значения не будут проверены.

Например, этот макрос не предоставит вам выходных данных, если # 1 и # 2 сверху верны.Он только скажет вам, если # 1 верно.


Этот код не требует, чтобы вы разделяли коды продуктов.Макрос будет работать с ними как

Sub MyNum()

Dim xCell As Range, Product_Code As Range
Set Product_Code = Sheets("Sheet1").Range("A2:A9") '<-- Update sheet name

For Each xCell In Product_Code
    If IsNumeric(Left(xCell, 1)) Or Left(xCell, 1) = " " Then
        xCell.Offset(0, 1) = "Invalid Product: Char 1 = Numeric or Null"
    ElseIf Right(xCell, Len(xCell) - 1) Mod 2 = 0 Then
        xCell.Offset(0, 1) = "Even Ending Range"
    ElseIf Right(xCell, Len(xCell) - 1) Mod 2 <> 0 Then
        xCell.Offset(0, 1) = "Odd Ending Range"
    End If
Next xCell

End Sub

enter image description here

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