Как использовать .numberformat в VBA с переменным текстом - PullRequest
0 голосов
/ 03 июня 2019

Я пишу подпункт worksheet_change, чтобы изменить форматирование ячейки, содержащей текст. Текст представляет собой имя клиента, и клиент получает прайс-листы от двух наших брендов. Таким образом, у меня есть две записи о клиентах для них, как «Клиент (Марка 1)» и «Клиент (Марка 2)», тогда как для другого клиента с одним брендом у них есть только одна запись «Клиент». Эти клиенты являются оптовыми торговцами электрооборудованием, и мы поставляем им кабель для некоторого контекста ...

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

При использовании макро-рекордера для ручного изменения форматирования на «Клиент» возвращается следующий код:

Cells(7,3).NumberFormat = ";;;""Customer"""

Так что я использую это как шаблон и воссоздаю его, используя ячейку "target", которая называется "Customer (Brand)":

Brand = Replace(Target, " (Brand)", "")
Cells(7, 3).NumberFormat = ";;;" & """""" & Brand & """"""

При наведении курсора на это в режиме отладки (?) Всплывающее окно читается точно так же, как и код, указанный выше регистратором. Но это не работает. Я получаю сообщение об ошибке «Невозможно установить свойство NumberFormat класса Range».

Мой полный код (любые другие советы приветствуются!):

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row <> 7 Or Target.Column <> 3 Then Exit Sub

Dim Debrand As String
Debrand = Replace(Target.Value, " (Brand)", "")

Application.EnableEvents = False
Cells(7, 3).NumberFormat = ";;;" & """""" & Debrand & """"""
Application.EnableEvents = True

End Sub

Большое спасибо.

...