Я создал макрос, который добавляет префикс к текущему выбору. Это довольно просто, как вы можете видеть - это петли через видимые ячейки в выборе. Я добавил .SpecialCells(xlCellTypeVisible)
, потому что это повлияло на непреднамеренные ячейки при использовании фильтров.Не выбранные ячейки влияют при использовании Selection.SpecialCells (xlCellTypeVisible) '
Sub Prefix()
Dim rng As Range
Dim Prefix As String
Prefix = "P"
For Each rng In Selection.SpecialCells(xlCellTypeVisible)
rng = Prefix & rng
Next rng
End Sub
В качестве примера, предположим, что мои данные Cells A1:A4
заполнены так:
Title
1
2
1
Моя проблема возникает, когда я делаю следующее:
- Положите
Autofilter
на интервале , и скрыть «2», который находится в A3 - Выбрать A2 (первый «1»)
- Запустить мой макрос
Проблема заключается в том, что вместо того, чтобы воздействовать только Cell A2
(выбранная клетка), он начинает применять префикс к первой строке (A1: Z1 и т.д.), пока я не отменить макрос. Он будет продолжать делать это с тысячами ячеек, если я позволю ему продолжать работать.
Эта проблема не возникает, когда мой выбор - несколько ячеек, или если я использую Selection
, а не Selection.SpecialCells(xlCellTypeVisible)
, или если я применяю макрос к одной ячейке, когда ничто не отфильтровывается (скрыто).
У кого-нибудь есть идеи, почему выбор по умолчанию для всей электронной таблицы, когда у меня есть только одна ячейка?
В качестве альтернативы, может ли кто-нибудь предложить способ добавления таких префиксов, как VBA?
Я знаю, что использование формулы excel облегчит проблему, но это не практично для меня, и, несмотря на это, не так быстро, как щелчок макроса.
Скорее всего, потому что ваш субордиант не знает, что такое Selection, поэтому он использует весь лист. Добавьте параметр диапазона для диапазона, в котором вы хотите, чтобы он работал, и передайте его в под. Замените Selection этим параметром, и он должен работать. – dinotom
Не могли бы вы объяснить, что вы подразумеваете, добавив параметр диапазона? Я знаю, что могу запустить sub для работы с Range («a2: a4»). SpecialCells (xlCellTypeVisible) или что-то в этом роде, но я хочу иметь возможность использовать его для выбора, а не для редактирования макроса каждый раз.Я могу применить к 10 различным выборам в строке, которые не являются рядом друг с другом, поэтому не стоит тратить время на редактирование макрокода. – unknownengines
Если вы хотите, чтобы он работал так, это должно было быть в событии изменения выбора рабочего листа. Я отправлю что-то короткое – dinotom