Нахождение значения с помощью поля ввода - PullRequest
0 голосов
/ 06 ноября 2019

Итак, я получаю эти стандартные отчеты, в которых много транзакций, и я написал макрос, который добавляет столбец (всегда в столбце L), который вычисляет, сколько лет каждой транзакции, а затем сортирует их от самых новых к самым старым.

Моя цель состоит в том, чтобы добавить поле ввода, в котором конечный пользователь может указать количество просроченных дней (скажем, 50), а затем код найдет первый экземпляр этого значения и скопирует все в этой строке взакончите и переместите его на новый лист.

Вот мой текущий саб, просто находящий данные (игнорируйте часть заголовков столбцов, поскольку она просто копирует заголовки)

Sub FindAndCopyData()

Dim ColumnHeadings As Range

Dim FirstCell As Range

Set ColumnHeadings = Range("A1:L1")

ColumnHeadings.Copy Sheets("Overdue Receipts").Range("A1")

Set FirstCell = Range("L:L").Find(What:=InputBox("How many days overdue"), LookIn:=xlValues, LookAt:=xlWhole)
End Sub

Это просто возвратзначение того, что я положил в поле ввода вместо адреса, где это значение появляется впервые. Благодарю за любую помощь!

1 Ответ

0 голосов
/ 06 ноября 2019

Range.Find возвращает ссылку Range, а не значение и не адрес. Вы можете получить адрес любого Range объекта через его свойство Address.

Разделите ваш код, у вас слишком много вещей происходит в одной инструкции:

Dim userInput As Variant
userInput = InputBox(...)
If StrPtr(userInput) = 0 Then
    'inputbox was cancelled
    Exit Sub
End If

Dim findResult As Range
Set findResult = ActiveSheet.Range("L:L").Find(CStr(userInput), ...)

If findResult Is Nothing Then
    'did not find anything
    Exit Sub
End If

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