Я пытаюсь создать макрос, который после выбора диапазона скажет мне, сколько 20-футовых или 40-футовых контейнеров было найдено в образце.

Выбор диапазона

Макрос, в основном, ищет строку "1x20" или "1x40", и когда одна из них найдена, переменные cont20 или cont40 увеличиваются на 1.

код, который у меня есть:

Sub containercount()

Dim count20 As Integer
Dim count40 As Integer

count20 = 0
count40 = 0 

For Each cell In Selection

If Not ActiveCell.Find("1x20", LookAt:=xlPart, MatchCase:=False) Is Nothing Then
 count20 = count20 + 1
End If

If Not ActiveCell.Find("1x40", LookAt:=xlPart, MatchCase:=False) Is Nothing Then
 count40 = count40 + 1
End If

Next cell

MsgBox ("Number of 20ft containers: " & count20 & vbNewLine & "Number of 40ft containers: " & count40)

End Sub

Но результат всегда ноль ... Буду признателен за вашу помощь.

1 ответ1

1

Причина, по которой он не работает, заключается в том, что вы ищете в пустом массиве.

Выбор должен быть заменен чем-то вроде ActiveSheet.Selection

Кроме того, вы должны использовать Cell.Find , а не ActiveCell . AciveCell ссылается на выбранную ячейку.

Но независимо от этого, я бы просто использовал формулу CountIf а не макрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .