excel checkspelling single cell

Я немного борюсь с CheckSpelling в Excel. У меня есть объединенная ячейка, которую я хочу проверить, но только эта ячейка. Вот что я делаю.

ActiveSheet.Unprotect strSheetPassword Application.DisplayAlerts = False Set ma = Range("B21").MergeArea ma.MergeCells = False Union(Range("B1"), ma(1, 1)).CheckSpelling ma.MergeCells = True Application.DisplayAlerts = True ActiveSheet.Protect strSheetPassword 

Это проверка ячейки, которую я хочу, но она также проверяет остальную часть документа. При чтении других сообщений у меня создалось впечатление, что проверка одной ячейки заставляет CheckSpelling проверять весь документ. Вот почему я ввел Союз с диапазоном («B1») – B1 содержит текст заголовка, который не имеет орфографических ошибок и обычно заблокирован, поэтому пользователи не могут его изменить. Но он все еще проверяет остальную часть листа! Я пробовал довольно много вариаций, но он все еще проверяет остальную часть листа.

ЗАКЛЮЧЕНИЕ У меня создалось впечатление, что можно вызвать форму CheckSpelling и проверить ее только на определенные ячейки. По-видимому, это не так. Вместо того, чтобы строить свою собственную форму, я должен уйти, проверяя весь лист каждый раз, хотя мне это действительно не нравится. Спасибо всем за отзывы!

Для одной объединенной ячейки:

 Sub spell_me() Dim b As Boolean b = Application.CheckSpelling(Word:=ActiveCell.Text) MsgBox b & vbCrLf & ActiveCell.Address & vbCrLf & ActiveCell.Text End Sub 

введите описание изображения здесь

EDIT # 1:

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

Если этого достаточно, если подсвечена неправильная часть, вы можете использовать это:

 Sub SpellCheck() Dim response As Boolean Dim words As Variant Dim wordCount As Long Dim startAt As Long words = Split(ActiveCell.Text, " ") 'set all of the text to automatic color ActiveCell.Font.ColorIndex = xlAutomatic For wordCount = LBound(words) To UBound(words) response = Application.CheckSpelling(word:=words(wordCount)) If Not response Then 'find out where it is in the text and color the font red startAt = InStr(ActiveCell.Text & " ", words(wordCount) & " ") ActiveCell.Characters(Start:=startAt, Length:=Len(words(wordCount))).Font.Color = vbRed End If Next End Sub 
Interesting Posts

Запускать Python в файлах excel через VBA, когда файлы находятся в разных местах

Поиск VBA и вставка на смену ячейки

Ошибка заголовка POI Apache

Excel 2003: ошибка «Active-X» с декабря 2014 года «обновление» – все еще сломалась. Что еще попробовать?

Как применить формулу CLEAN () для всего листа Excel?

Лицевая панель Excel: динамический граф с использованием фильтров

Изменение цвета ячеек на основе значения

Microsoft Excel отсеивает все строки фраз, которые не содержат по крайней мере 1 ключевое слово из отдельного списка

постройте график, используя разные файлы Excel

Как я могу отправить автоматическое сообщение электронной почты, когда изменился какой-либо определенный диапазон значений ячеек

Выровнять по центру весь рабочий лист

Экран автоматического заполнения ярлыка

Связывание рабочих листов с основным рабочим листом и сохранение значений, если листы мастера отсутствуют? Excel 2010

Excel VBA – настройка формулы, позволяющей VBA зацикливать ее

Макрос события Excel Workbook не всегда запускается

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