Sub, который вставляет слово Winner в колонку O

Попытка вставить слово Winner в колонку O, когда пользователь выбирает слово Jackpot из выпадающего списка

Private Sub Worksheet_SelectionChange(ByVal Target As Range) For x = 6 To 88 If Cells(x, 14).Value = "Jackpot" Then Cells(x, 15).Value = "Winnner" ElseIf Cells(x, 14).Value <> "High" Then Cells(x, 15).Value = " " End If Next x End Sub 

Проблема, с которой я столкнулась, – это когда столбец O заполняется пользователем любым текстом, процедура не должна перезаписывать текстовую запись.

Я не знаю, как написать код VBA, который сохраняет текстовую запись одинаково и не перезаписывает ее.

Макрос события, который вы ищете, это Worksheet_Change , а не макрос события Worksheet_SelectionChange .

Функция Worksheet_Change запускается всякий раз, когда любое значение на листе изменяется (но не по формуле), поэтому, если вы собираетесь использовать Sub для изменения значений в столбце O, вам необходимо временно приостановить обработку событий при внесении изменений или вы рискуете с помощью Worksheet_Change попытайтесь запустить поверх себя.

Когда изменение на рабочем листе вызывает значение Worksheet_Change, вам нужно определить, находится ли Target (ячейка или ячейки, которые получили изменение) в диапазоне ячеек, которые вы заинтересованы. Это делается с помощью метода Intersect . Ниже следует, что одна или несколько ячеек в Target должны находиться в столбце N между строками 6 и 88. Если есть один или несколько, то для каждого … Следующая инструкция используется для циклического преобразования каждой ячейки, соответствующей критериям ,

Каждая соответствующая ячейка имеет значение, указанное в последовательности. Операция Select Case облегчает множество возможных результатов.

Поместите все пункты, рассмотренные выше, и вы должны получить код, как показано ниже.

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Long If Not Intersect(Target, Columns(14), Range("6:88")) Is Nothing Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False Dim win As Range For Each win In Intersect(Target, Columns(14), Range("6:88")) Select Case LCase(win.Value2) Case "jackpot" win.Offset(0, 1) = "Winnner" '<~~ ?? spelling...?? Case "high" ' do nothing...? Case Else win.Offset(0, 1).ClearContents End Select Next win End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

Я добавил оператор Option Explicit в верхней части листа кода¹. Это потребует от вас объявления ваших переменных перед их использованием.

Я вижу N6: N88, заполненный выпадающими списками Data Validation.


¹ Настройка Требовать декларацию переменных в инструментах VBE ► Опции ► Страница свойств редактора помещает оператор Option Explicit в начало каждого вновь созданного кодового листа. Это позволит избежать ошибок глупого кодирования, таких как орфографические ошибки, а также повлиять на использование правильного типа переменной в объявлении переменной. Переменные, созданные на лету без объявления, представляют собой тип варианта / объекта. Использование Option Explicit широко считается «лучшей практикой».

ЕСЛИ вы используете коммандер управления activeX, тогда вы можете назначить ему макрос, который будет работать на «Обновить»,

Проверь это

  Private Sub ComboBox1_Change() If ComboBox1.Value = "JackPot" Then Range("o1").Offset(0, 1).Value = "Winner" End If End Sub Private Sub ComboBox1_DropButtonClick() With Me.ComboBox1 .AddItem "JackPot" .AddItem "high" End With End Sub 

смещение ошибочно, но сначала я отправился в другое место с ним … должно быть достаточно просто, чтобы вы могли найти форму там

Interesting Posts

Более быстрый способ вставки строк в электронную таблицу Excel на C # с помощью oleDbCommand?

XML для CSV / Excel

Создание динамического диапазона в сводной таблице

Поместите гиперссылку внутри кода VBA для автоматического письма

Как написать функцию countifs для нескольких листов, которые извлекаются из фильтрованных данных?

Inter-Sub ErrorLine

У меня есть строка с трубкой и двойная прямая косая черта, которую мне нужно форматировать в файле excel, как вывод в java

Изображение Excel размера ячейки

Экспорт структуры ячейки из Matlab в Excel

Как получать и отправлять сообщения через ботовую телеграмму в Excel VBA?

Сгенерировать и внедрить строку в кавычки

Я хочу создать что-то, что будет в основном идти «IF Q = O THEN DELETE Q»

Скажите цикл, чтобы вставить только одну ячейку и не полностью вниз

Импортировать идентичные файлы excel в доступ с несколькими листами

CSV-данные не обрабатываются правильно

Давайте будем гением компьютера.